[tor-commits] [ooni-probe/master] Teach setup-dependencies.sh two install modes

art at torproject.org art at torproject.org
Mon Jan 13 21:48:52 UTC 2014


commit 35e7deda2a78051bd75aaba8b144ff4dfb07688b
Author: David Stainton <dstainton415 at gmail.com>
Date:   Mon Jan 13 21:25:44 2014 +0100

    Teach setup-dependencies.sh two install modes
    
    Privileged mode installs python package dependencies systems wide.
    Unprevileged mode installs them in the virtualenv.
    Commandline args required: -u|-p
    Now uses pip 1.5 so that we don't allow arbitrary code execution.
    gpg signing key for pip updated to Donald Stufft's key 3372DCFA
---
 setup-dependencies.sh | 1056 ++++++++++++++++++++++++++++++++++---------------
 1 file changed, 733 insertions(+), 323 deletions(-)

diff --git a/setup-dependencies.sh b/setup-dependencies.sh
index 5ff3b87..dc933cc 100755
--- a/setup-dependencies.sh
+++ b/setup-dependencies.sh
@@ -22,9 +22,7 @@ elif [ -r /lib/lsb/init-functions ]; then
 fi
 
 TOR_DEB_REPO="http://deb.torproject.org/torproject.org";
-if [[ -z "$USE_VIRTUALENV" ]]; then
-  USE_VIRTUALENV=1
-fi
+
 usage()
 {
 cat << EOF
@@ -33,12 +31,15 @@ usage: ./${SCRIPTNAME} options
 OPTIONS:
    -h      Show this message
    -y      To assume yes to all queries
-
+ONE MODE SPECIFICATION REQUIRED:
+   -p      Privileged mode - install all dependencies system wide
+   -u      Unprivileged mode - install most dependencies in a virtualenv
 EOF
 }
 
 ASSUME_YES=0
-while getopts “hv:ny” OPTION
+PRIV_MODE=3
+while getopts “hypu” OPTION
 do
   case $OPTION in
     h)
@@ -48,6 +49,12 @@ do
     y)
       ASSUME_YES=1
       ;;
+    u)
+      PRIV_MODE=0
+      ;;
+    p)
+      PRIV_MODE=1
+      ;;
     ?)
       usage
       exit
@@ -55,6 +62,28 @@ do
     esac
 done
 
+# make sure a privilege mode was specified
+if [[ $PRIV_MODE -eq 3 ]]; then
+    usage
+    exit
+fi
+
+# make sure we are not root when in unprivileged mode
+if [[ $PRIV_MODE -eq 0 ]]; then
+    if [[ $EUID -eq 0 ]]; then
+	echo "operator error: non-privilege mode must be run as non-root user with sudo privileges"
+	exit
+    fi
+fi
+
+# make sure we are root when in privileged mode
+if [[ $PRIV_MODE -eq 1 ]]; then
+    if [[ $EUID -ne 0 ]]; then
+	echo "operator error: privileged-mode must be run as root"
+	exit
+    fi
+fi
+
 DO () {
     if [ -z "$2" ]; then
         RET=0
@@ -69,7 +98,7 @@ DO () {
     echo "Running: "
     echo "        $CMD"
     $1 &>${BUILD_LOG}
-    if [ "$?" -eq "$2" ]; then
+    if [[ "$?" -eq "$2" ]]; then
         echo "SUCCESS"
     else
         echo "FAIL"
@@ -115,7 +144,7 @@ vercomp () {
 }
 
 ## BEGIN PIP SECURE INSTALL
-NEEDED_VERSION_PIP=1.3.1
+NEEDED_VERSION_PIP=1.5
 
 PIP_PKG="pip-${NEEDED_VERSION_PIP}.tar.gz"
 PKG_VERIFY=${BUILD_DIR}/${PIP_PKG}.asc
@@ -124,291 +153,666 @@ PIP_SIG_URL="https://pypi.python.org/packages/source/p/pip/${PIP_PKG}.asc"
 PIP_KEY_FILE=${BUILD_DIR}/pip-pub-key.gpg
 PIP_PUB_KEY="
 -----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.12 (Darwin)
-Comment: GPGTools - http://gpgtools.org
-
-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
-=0zqq
+
+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
+dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABk
+ZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5
+NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGlu
+IElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAA
+E6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dt
+ZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBj
+dXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQA
+WQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA
+0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB
+YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQC
+HQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwAD
+CwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
+LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF
+hgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcH
+GQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII
+5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK
+8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN
+QA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP
+zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQS
+oxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsV
+vRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZ
+IBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMc
+zBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJgg
+xCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNol
+CSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWsp
+nSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwu
+gi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z
+uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5
+Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/
+IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF
+VUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL
+4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS
+x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbha
+B1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9h
+omH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNp
+mmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx
+8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6
+pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eD
+uoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqN
+MY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+X
+Cpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNih
+R6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr
+6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm2
+8Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePC
+X8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO
+Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHa
+dtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn
+H+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0
+NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////hAJhF
+eGlmAABNTQAqAAAACAAGAQYAAwAAAAEAAgAAARIAAwAAAAEAAQAAARoABQAAAAEA
+AABWARsABQAAAAEAAABeASgAAwAAAAEAAgAAh2kABAAAAAEAAABmAAAAAAAAAEgA
+AAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAyKADAAQAAAABAAAA
+zQAAAAD/2wBDAAICAgICAQICAgICAgIDAwYEAwMDAwcFBQQGCAcICAgHCAgJCg0L
+CQkMCggICw8LDA0ODg4OCQsQEQ8OEQ0ODg7/2wBDAQICAgMDAwYEBAYOCQgJDg4O
+Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg7/
+wAARCADNAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI
+CQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEI
+I0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ
+WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2
+t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
+AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3
+AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom
+JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaH
+iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna
+4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyfw7Pqmo2kN15EQlt1Zo0
+jG3cCMZ2/pXqSXNxY+H7Ga1t7m8vpyTKkgCpGp6Aepyfp1NeQ+FNcK+IlQSRpbuC
+JzvyzL2AHqT0r1q11C+u7iazjtAkEWFQzchfc+v0oA3nXWbDWYptVtUWS7ttsWxt
+wQdwPQ16NaatF4avoU1TTTPApiEktvOBEFJHyMTj2BH4VheJtP1PUfCOlalZgXl1
+aoBKANuU29APXv8AhWKmtaDrPw3m0bxFNZWN+EW809bmQqCYnAO4dgTxz60Afelz
+4y+HOs/E74e+DPD9/NqHgmOQ/wBtrFIWt1upATChyckh8sQucELnivOPj/8AALw9
+4N8OzeKIdTvbSwijEccJKu99dyPhB1GDzzgehzXxVpXxO/sXVrLTW0u3tbFtWGo3
+EtpIA9wwK4jQ/wACADAPvmvqH4zfHvQ/Hmk3j6fApWSWA6W17JuFmIwA+wA/eZur
+HPANAHiujNqh0q40qyieOO4ulV0YANJIg4yc9Bz9OTXoug+Kbqz08Wl5cSieCCaO
+CwuXzGC68nHQ+ufpW18ItI8AeJtS1W48WateXOnqIvs0dm7K5nbBcZXnb2x3zX0N
+qHwb+FUH7TGj31td382jzRvFcQeaHt4R5ZAG49txzk/3QKAPl/w/8QddTw/e6DLc
+GLThlIIM5AkcgZx3fHAPYGvafgp498dQ/EiLQ9Jdb9rqbyZLeYbo1ABw2R0AznIr
+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
+=1NFB
 -----END PGP PUBLIC KEY BLOCK-----
 "
 INSTALL_PIP=1
@@ -426,8 +830,8 @@ install_pip_securely() {
 
   echo "[+] Verifying PGP signature of pip"
   echo "${PIP_PUB_KEY}" > ${PIP_KEY_FILE}
-  DO "gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --import $PIP_KEY_FILE" "0"
-  DO "gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --verify $PKG_VERIFY" "0"
+  DO "sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --import $PIP_KEY_FILE" "0"
+  DO "sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --verify $PKG_VERIFY" "0"
 
   DO "tar xzf ${BUILD_DIR}/${PIP_PKG}" "0"
   DO "cd pip-*" "0"
@@ -445,15 +849,10 @@ install_pip_securely() {
       exit
     fi
   fi
-  DO "python setup.py install" "0"
+  DO "sudo python setup.py install" "0"
 
 }
 
-if [[ "$EUID" -ne "0" ]]; then
-  echo "Error: OONI setup dependencies script must be run as root."
-  exit 1
-fi
-
 case $DISTRO_VERSION in
   natty|wheezy|squeeze|precise|n/a)
 
@@ -462,16 +861,16 @@ case $DISTRO_VERSION in
   DO "chmod 700 ${BUILD_DIR}" "0"
 
   # Import the Tor public key
-  DO "gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --keyserver x-hkp://pool.sks-keyservers.net --recv-keys 0x886DDD89" "0"
-  gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
+  DO "sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --keyserver x-hkp://pool.sks-keyservers.net --recv-keys 0x886DDD89" "0"
+  sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
     
   HAVE_TOR_REPO="`grep deb.torproject.org/torproject.org /etc/apt/sources.list /etc/apt/sources.list.d/* 2>&1|grep torproject|head -n 1`";
   if [ -z "$HAVE_TOR_REPO" ]; then
     echo "[-] It appears that you do not have the torproject.org Debian repository installed; installing it...";
     if which apt-add-repository >/dev/null 2>&1; then
-      apt-add-repository "deb $TOR_DEB_REPO $DISTRO_VERSION main"
+      sudo apt-add-repository "deb $TOR_DEB_REPO $DISTRO_VERSION main"
     else
-      echo -e "deb $TOR_DEB_REPO $DISTRO_VERSION main\ndeb-src $TOR_DEB_REPO $DISTRO_VERSION main" | tee -a /etc/apt/sources.list
+      echo -e "deb $TOR_DEB_REPO $DISTRO_VERSION main\ndeb-src $TOR_DEB_REPO $DISTRO_VERSION main" | sudo tee -a /etc/apt/sources.list
     fi
   else
     echo "[.] It appears that you have the torproject.org Debian repository installed!";
@@ -479,46 +878,57 @@ case $DISTRO_VERSION in
 
   # Install the basic packages to get pip ready to roll
   echo "[+] Updating OS package list...";
-  apt-get update 2>&1 > /dev/null;
+  sudo sudo apt-get update 2>&1 > /dev/null;
   echo "[+] Installing packages for your system...";
-  DO "apt-get -y install curl git-core python python-dev python-setuptools build-essential libdumbnet1 python-dumbnet python-libpcap python-dnspython tor tor-geoipdb libgeoip-dev" "0"
+  DO "sudo apt-get -y install curl git-core python python-dev python-setuptools build-essential libdumbnet1 python-dumbnet python-libpcap python-dnspython tor tor-geoipdb libgeoip-dev" "0"
 
   if [ "${INSTALL_PIP}" -eq "1" ] ; then
     echo "[+] Installing pip securely"
     install_pip_securely
   fi
 
-  if [ "$USE_VIRTUALENV" -eq "1" ]; then
+  if [ "$PRIV_MODE" -eq "0" ]; then
     echo "[+] Using virtualenvironment..."
-    DO "apt-get -y install python-virtualenv virtualenvwrapper" "0"
-    if [ ! -f ~/.virtualenvs/ooniprobe/bin/activate ]; then
+    DO "sudo apt-get -y install python-virtualenv virtualenvwrapper" "0"
+    if [ ! -f $HOME/.virtualenvs/ooniprobe/bin/activate ]; then
       # Set up the virtual environment
-      DO "mkdir -p ~/.virtualenvs" "0"
-      DO "virtualenv ~/.virtualenvs/ooniprobe" "0"
-      source ~/.virtualenvs/ooniprobe/bin/activate
+      DO "mkdir -p $HOME/.virtualenvs" "0"
+      DO "virtualenv $HOME/.virtualenvs/ooniprobe" "0"
+      source $HOME/.virtualenvs/ooniprobe/bin/activate
     else
-      source ~/.virtualenvs/ooniprobe/bin/activate
+      source $HOME/.virtualenvs/ooniprobe/bin/activate
     fi
+    echo "[+] Installing all of the Python dependency requirements with pip in your virtualenv!";
   fi
 
-
-  echo "[+] Installing all of the Python dependency requirements with pip!";
+  if [[ $PRIV_MODE -eq 1 ]]; then
+      echo "[+] Installing all of the Python dependency requirements with pip system wide!";
+      # pip 1.5 needs this
+      DO "sudo pip install setuptools --no-use-wheel --upgrade"
+  fi
 
   # Install all of the out of package manager dependencies
   DO "pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt" "0"
   if [ $? != 0 ]; then
-    echo "[+] It appears that pip is having issues installing our Python dependency requirements, we'll try again!";
-    DO "pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt" "0"
-    if [ $? != 0 ]; then
-      echo "[+] It appears that pip is unable to satisfy our requirements - please run the following command:";
-      echo "   pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt   ";
-      exit 1;
-    fi
+      echo "[+] It appears that pip is having issues installing our Python dependency requirements, we'll try again!";
+      DO "pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt" "0"
+      if [ $? != 0 ]; then
+	  echo "[+] It appears that pip is unable to satisfy our requirements - please run the following command:";
+	  echo "   pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt   ";
+	  exit 1;
+      fi
   fi
-  
+
+  echo ""
   echo "You can now install ooniprobe with: "
   echo ""
+
+  if [[ $PRIV_MODE -eq 0 ]]; then
+      echo "source $HOME/.virtualenvs/ooniprobe/bin/activate"
+  fi
+
   echo "python setup.py install"
+
   echo ""
   echo "You should also be sure to edit your configuration appropriately by doing:"
   echo ""





More information about the tor-commits mailing list