Sie sind auf Seite 1von 4

#!

/bin/bash
#
# Automated installation and patching of a per-user ArcGIS Server 10.1
# for Linux to be used in standalone fashion.
#
# (1) Install the software non-interactively
# (2) Kill any processes the installer started (license manager)
# (3) Patch the init_Xvfb.sh script to behave more nicely
# (4) Emit a Python shell startup script for the end user
#
# Copyright (c) 2013
# Dr. Jeffrey Frey
# Network & Systems Services, University of Delaware
# Newark, DE 19716
#
# $Id: install-arcgis-10.1,v 1.1 2013/06/20 16:48:54 frey Exp $
#
#
# Base directory for our installation bits:
#
DATADIR=/opt/shared/arcgis/data/10.1
#
# The installation bits themselves:
#
PROVISIONING_FILE="${DATADIR}/ArcGISforServerAdvancedEnterprise_server_194954.pr
vc"
INSTALL_PACKAGE="${DATADIR}/ArcGIS_Server_Ent_Linux_101_129046"
#
# Due to memory limits on the head node and the installer's use of
# a memory hungry Java VM, installation must be done on a compute node.
# If running on a compute node via qlogin, then use the temp directory
# Grid Engine gave us. Otherwise, use the /scratch disk.
#
HOST=`/bin/hostname | grep '^n[0-9]\{3\}$'`
if [ -n "$HOST" ]; then
# Don't use /tmp for unpacking the files!
if [ -n "$TMPDIR" ]; then
IATEMPDIR="$TMPDIR"
else
IATEMPDIR=/scratch
fi
export IATEMPDIR
fi
#
# Collect and validate our command line arguments:
#
INSTALLDIR="$1"
if [ -z "$1" ]; then
echo "usage:"
echo ""
echo " $0 <install-directory>"
echo ""
exit 1
fi
if [ ! -d "$INSTALLDIR" ]; then
mkdir -p $INSTALLDIR
if [ $? -ne 0 ]; then
echo "ERROR: could not create $INSTALLDIR"
exit 1
fi
else
if [ ! -w "$INSTALLDIR" ]; then
echo "ERROR: cannot write to $INSTALLDIR"
exit 1
fi
fi
ORIGDIR=`pwd`
cd "$INSTALLDIR"
INSTALLDIR=`pwd`
#
# The installer needs a Java VM in order to execute:
#
if [ -z `type -t vpkg_require` ]; then
source /etc/profile.d/valet.sh
fi
vpkg_require openjdk
#
# Run the installer:
#
"${INSTALL_PACKAGE}/ArcGISServer/Setup" \
--mode silent \
--directory "$INSTALLDIR" \
--license-agreement Yes \
--authorization-file "$PROVISIONING_FILE" \
2> /dev/null
if [ $? -ne 0 ]; then
echo "Installation failed, removing ${INSTALLDIR}/arcgis..."
rm -rf "${INSTALLDIR}/arcgis"
cd "$ORIGDIR"
exit 1
fi
#
# Kill any software the installer started for us:
#
HOW_MANY=`pgrep -f "${INSTALLDIR}/arcgis/server" | wc -l`
if [ -n "$HOW_MANY" -a $HOW_MANY -gt 0 ]; then
echo ""
echo "Killing $HOW_MANY process(es) started by the installer..."
pkill -9 -f "${INSTALLDIR}/arcgis/server"
fi
# Patch the init_Xvfb.sh script:
echo ""
echo "Patching the init_Xvfb.sh script..."
base64 --decode <<EOT | patch --input=- "${INSTALLDIR}/arcgis/server/framework/r
untime/xvfb/init_Xvfb.sh" > /dev/null 2>&1
LS0tIGFyY2dpcy9zZXJ2ZXIvZnJhbWV3b3JrL3J1bnRpbWUveHZmYi9pbml0X1h2ZmIuc2gJMjAx
Mi0wNC0yNiAxMjoxODozNS4wMDAwMDAwMDAgLTA0MDAKKysrIGFyY2dpcy9zZXJ2ZXIvZnJhbWV3
b3JrL3J1bnRpbWUveHZmYi9pbml0X1h2ZmIuc2gJMjAxMy0wNS0yMSAxMTozNTo0OS40Mzg3OTQy
NDcgLTA0MDAKQEAgLTcsNiArNywxNiBAQAogWFZGQlBNSU49NjAwCiBYVkZCUE1BWD02MTkKIAor
aWYgWyAteiAiJFhWRkJMT0ciIF07IHRoZW4KKyAgWFZGQkxPRz0iJHtYVkZCSE9NRX0veHZmYl9l
cnIubG9nIjsgZXhwb3J0IFhWRkJMT0cKK2ZpCitpZiBbIC16ICIkWFZGQlBJRCIgXTsgdGhlbgor
ICBYVkZCUElEPSIke1hWRkJIT01FfS94dmZiLnBpZCI7IGV4cG9ydCBYVkZCUElECitmaQoraWYg
WyAteiAiJFhWRkJQT1JURiIgXTsgdGhlbgorICBYVkZCUE9SVEY9IiR7WFZGQkhPTUV9L3h2ZmIu
cG9ydCI7IGV4cG9ydCBYVkZCUE9SVEYKK2ZpCisKIGV4cG9ydCBYVkZCSE9NRSBYVkZCUE1JTiBY
VkZCUE1BWAogCiAjaW50cm9kdWNlZCB0aGUgaWYgY29uZGl0aW9uIGJlbG93IGZvciBBcmNHSVMg
U2VydmVyIGNvbmZpZ3VyYXRpb24gbG9nZ2luZwpAQCAtMTUsOCArMjUsNiBAQAogewogICBpZiBb
IC1uICIkWFZGQkRFQlVHIiBdOyB0aGVuCiAgICAgZWNobyAiJDEiCi0gIGVsc2UKLSAgICBlY2hv
ICIiCiAgIGZpCiB9CiAKQEAgLTY0LDcgKzcyLDggQEAKICAgICAgICAgICAgIFhWRkJCSU49IiR7
WFZGQkhPTUV9L1JIRUwvWHZmYiIKICAgICAgICAgICBmaQogICAgICAgICBmaQotICAgICAgICAk
e1hWRkJCSU59IDoke1hWRkJQT1JUfSAtc2NyZWVuIDAgMTI4MHgxMDI0eDI0ICR7RVNSSUZvbnRQ
YXRofSAtYWMgMj4gJHtYVkZCSE9NRX0veHZmYl9lcnIubG9nICYKKyAgICAgICAgJHtYVkZCQklO
fSA6JHtYVkZCUE9SVH0gLXNjcmVlbiAwIDEyODB4MTAyNHgyNCAke0VTUklGb250UGF0aH0gLWFj
IDI+ICR7WFZGQkxPR30gJgorICAgICAgICBYVkZCQklOUElEPSQhCiAKICAgICAgICAgIyBQYXVz
ZSBhIG1vbWVudCBhbmQgdGhlbiBzZWUgaWYgaXQgc3RhcnRlZCB1cCBvay4KICAgICAgICAgc2xl
ZXAgMQpAQCAtNzQsNiArODMsNyBAQAogICAgICAgICAgIGVjaG8gIkVSUk9SOiBVbmFibGUgdG8g
c3RhcnQgWHZmYiBvbiBwb3J0ICRYVkZCUE9SVC4iCiAgICAgICAgIGVsc2UKICAgICAgICAgICAj
IFh2ZmIgc3RhcnRlZCBvay4KKyAgICAgICAgICBlY2hvICRYVkZCQklOUElEID4gJHtYVkZCUElE
fQogICAgICAgICAgIGJyZWFrCiAgICAgICAgIGZpCiAgICAgICBmaQpAQCAtOTEsNyArMTAxLDcg
QEAKICAgaWYgWyAieCR7WFZGQlBPUlR9eCIgIT0gInh4IiBdCiAgIHRoZW4KICAgICAgICNTdG9y
ZSB0aGUgcG9ydCB2YWx1ZSBmb3IgdXNlIHdpdGggQUdTIHN5c3RlbSBwb3J0IGxpc3RpbmcgdXRp
bGl0eQotICAgICAgZWNobyAkWFZGQlBPUlQgPiAke1hWRkJIT01FfS94dmZiLnBvcnQKKyAgICAg
IGVjaG8gJFhWRkJQT1JUID4gJHtYVkZCUE9SVEZ9CiAgICBmaQogfQogCkBAIC05OSwyNSArMTA5
LDM3IEBACiB7CiAgICBpZiBbICJ4JERJU0FCTEVfQVJDR0lTU0VSVkVSX1ZEUyIgPSAieCIgXQog
ICAgdGhlbgotICAgICBYVkZCUE9SVD0kWFZGQlBNSU47ZXhwb3J0IFhWRkJQT1JUCi0gICAgICAK
LSAgICAgd2hpbGUgWyAkWFZGQlBPUlQgLWxlICRYVkZCUE1BWCBdCi0gICAgIGRvCi0gICAgICAg
cHJvY2Vzc19saXN0PWBwcyAtdSAkTE9HTkFNRSAtbyBwaWQsY21kIHwgZ3JlcCBYdmZiIHwgZ3Jl
cCAiJHtYVkZCUE9SVH0gLXNjcmVlbiIgfCBncmVwIC12IGdyZXAgfCB4YXJncyB8IGF3ayAne3By
aW50ICQxfSdgCi0gICAgICAgaWYgWyAiJHByb2Nlc3NfbGlzdCIgIT0gIiIgXQotICAgICAgIHRo
ZW4KLSAgICAgICAgIGVjaG9fZGJnICJTdG9wcGluZyBYdmZiIG9uIHBvcnQgJFhWRkJQT1JUIgot
ICAgICAgICAga2lsbCAtVEVSTSAkcHJvY2Vzc19saXN0Ci0gICAgCisgICAgIGlmIFsgLXIgIiR7
WFZGQlBJRH0iIF07IHRoZW4KKyAgICAgICBraWxsIC1URVJNIGBjYXQgJHtYVkZCUElEfWAKKyAg
ICAgICBybSAtZiAiJHtYVkZCUElEfSIKKyAgICAgICBpZiBbIC1yICIke1hWRkJQT1JUfSIgXTsg
dGhlbgorICAgICAgICAgWFZGQlBPUlQ9YGNhdCAke1hWRkJQT1JURn1gOyBleHBvcnQgWFZGQlBP
UlQKICAgICAgICAgIHJtIC1mIC90bXAvLlgxMS11bml4L1gkWFZGQlBPUlQgPi9kZXYvbnVsbCAy
PiYxCiAgICAgICAgICBybSAtZiAvdG1wLy5YMTEtcGlwZS9YJFhWRkJQT1JUID4vZGV2L251bGwg
Mj4mMQogICAgICAgICAgcm0gLWYgL3RtcC8uWCRYVkZCUE9SVC1sb2NrID4vZGV2L251bGwgMj4m
MQotICAgICBpZiBbIC1mICR7WFZGQkhPTUV9L3h2ZmIucG9ydCBdCisgICAgICAgICBybSAtZiAi
JHtYVkZCUE9SVEZ9IgorICAgICAgIGZpCisgICAgIGVsc2UKKyAgICAgICBYVkZCUE9SVD0kWFZG
QlBNSU47IGV4cG9ydCBYVkZCUE9SVAorICAgICAgICAKKyAgICAgICB3aGlsZSBbICRYVkZCUE9S
VCAtbGUgJFhWRkJQTUFYIF0KKyAgICAgICBkbworICAgICAgICAgcHJvY2Vzc19saXN0PWBwcyAt
dSAkTE9HTkFNRSAtbyBwaWQsY21kIHwgZ3JlcCBYdmZiIHwgZ3JlcCAiJHtYVkZCUE9SVH0gLXNj
cmVlbiIgfCBncmVwIC12IGdyZXAgfCB4YXJncyB8IGF3ayAne3ByaW50ICQxfSdgCisgICAgICAg
ICBpZiBbICIkcHJvY2Vzc19saXN0IiAhPSAiIiBdCiAgICAgICAgICB0aGVuCi0gICAgICAgcm0g
LWYgJHtYVkZCSE9NRX0veHZmYi5wb3J0CisgICAgICAgICAgIGVjaG9fZGJnICJTdG9wcGluZyBY
dmZiIG9uIHBvcnQgJFhWRkJQT1JUIgorICAgICAgICAgICBraWxsIC1URVJNICRwcm9jZXNzX2xp
c3QKKyAgICAgIAorICAgICAgICAgICBybSAtZiAvdG1wLy5YMTEtdW5peC9YJFhWRkJQT1JUID4v
ZGV2L251bGwgMj4mMQorICAgICAgICAgICBybSAtZiAvdG1wLy5YMTEtcGlwZS9YJFhWRkJQT1JU
ID4vZGV2L251bGwgMj4mMQorICAgICAgICAgICBybSAtZiAvdG1wLy5YJFhWRkJQT1JULWxvY2sg
Pi9kZXYvbnVsbCAyPiYxCisgICAgICAgICAgIGlmIFsgLWYgJHtYVkZCUE9SVEZ9IF0KKyAgICAg
ICAgICAgdGhlbgorICAgICAgICAgICAgIHJtIC1mICR7WFZGQlBPUlRGfQorICAgICAgICAgICBm
aQogICAgICAgICAgZmkKLSAgICAgICBmaQotICAgICAgIFhWRkJQT1JUPWBleHByICRYVkZCUE9S
VCArIDFgO2V4cG9ydCBYVkZCUE9SVAotICAgICBkb25lCisgICAgICAgICBYVkZCUE9SVD1gZXhw
ciAkWFZGQlBPUlQgKyAxYDtleHBvcnQgWFZGQlBPUlQKKyAgICAgICBkb25lCisgICAgIGZpCiAg
ICBmaQogfQo=
EOT
if [ $? -ne 0 ]; then
echo "Failed patching the init_Xvfb.sh script, removing ${INSTALLDIR}/arcgis..
."
rm -rf "${INSTALLDIR}/arcgis"
cd "$ORIGDIR"
exit 1
fi
#
# Create the shell launcher script for the user:
#
echo ""
echo "Adding ArcGIS shell startup script. You can run the Python shell with the
command"
echo ""
echo " ${INSTALLDIR}/arcgis-10.1-shell"
echo ""
cat > ${INSTALLDIR}/arcgis-10.1-shell <<EOT
#!/bin/bash
#
# Startup ArcGIS 10.1 server-as-a-client
#
if [ -z \`type -t vpkg_require\` ]; then
source /etc/profile.d/valet.sh
fi
vpkg_require x11/RHEL6.1
ARCGIS_SERVER_PREFIX=${INSTALLDIR}/arcgis/server
installDir=\${ARCGIS_SERVER_PREFIX}
# Setup the environment:
source \${ARCGIS_SERVER_PREFIX}/framework/etc/arcenv
# If there's no X11 display set in the environment, then
# we need to startup a virtual framebuffer
if [ -z "\$DISPLAY" ]; then
NEED_XVFB=1
export XVFBLOG=\`pwd\`"/\$\$.log"
export XVFBPID=\`pwd\`"/\$\$.pid"
export XVFBPORTF=\`pwd\`"/\$\$.port"
source \${ARCGIS_SERVER_PREFIX}/framework/runtime/xvfb/init_Xvfb.sh
StartXvfb #> /dev/null 2>&1
if [ -r \$XVFBPORTF ]; then
export DISPLAY=:\`cat \$XVFBPORTF\`
fi
else
NEED_XVFB=0
fi
# Launch the Windows Python shell inside WINE:
trap "{ if [ \$NEED_XVFB -ne 0 ]; then StopXvfb > /dev/null 2>&1; rm -f \$XVFBLO
G \$XVFBPID \$XVFBPORTF; fi }" SIGTERM EXIT
wine "C:/Python27/ArcGISx6410.1/python.exe" "-B" \$*
EOT
if [ $? -eq 0 ]; then
chmod +x ${INSTALLDIR}/arcgis-10.1-shell
else
echo "Failed to create ArcGIS shell starter script"
fi

cd "$ORIGDIR"
exit 0

Das könnte Ihnen auch gefallen