[tor-commits] [ooni-probe/master] Add install.sh script heavily based on docker

art at torproject.org art at torproject.org
Fri Nov 20 14:41:57 UTC 2015


commit 2af2c9ffd983ea22271322b17319332dd3be7d10
Author: Arturo Filastò <art at fuffa.org>
Date:   Fri Jul 3 12:03:20 2015 +0200

    Add install.sh script heavily based on docker
---
 scripts/install.sh |  166 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 166 insertions(+)

diff --git a/scripts/install.sh b/scripts/install.sh
new file mode 100644
index 0000000..9a4928f
--- /dev/null
+++ b/scripts/install.sh
@@ -0,0 +1,166 @@
+#!/bin/sh
+set -e
+#
+# This script is meant for quick & easy install via:
+#   'curl -sSL https://get.ooni.io/ | sh'
+# or:
+#   'wget -qO- https://get.ooni.io/ | sh'
+#
+# It is heavily based upon the get.docker.io script
+
+# These are the minimum ubuntu and debian version required to use the debian
+# package.
+# Currently you can only set the major version number.
+MIN_DEBIAN_VERSION=8
+MIN_UBUNTU_VERSION=11
+TOR_DEB_REPO="http://deb.torproject.org/torproject.org"
+
+url='https://get.ooni.io/'
+
+command_exists() {
+	command -v "$@" > /dev/null 2>&1
+}
+
+non_root_usage() {
+  your_user=your-user
+  [ "$user" != 'root' ] && your_user="$user"
+  echo
+  echo 'If you would like to run all ooniprobe tests as a non-root user, you should'
+  echo 'look at using the ooniprobe non root wrapper:'
+  echo
+  echo '  https://github.com/TheTorProject/ooni-probe/blob/master/bin/Makefile'
+  echo
+}
+
+if command_exists ooniprobe; then
+	echo >&2 'Warning: "ooniprobe" command appears to already exist.'
+	echo >&2 'Please ensure that you do not already have ooniprobe installed.'
+	echo >&2 'You may press Ctrl+C now to abort this process and rectify this situation.'
+	( set -x; sleep 20 )
+fi
+
+user="$(id -un 2>/dev/null || true)"
+
+sh_c='sh -c'
+if [ "$user" != 'root' ]; then
+	if command_exists sudo; then
+		sh_c='sudo sh -c'
+	elif command_exists su; then
+		sh_c='su -c'
+	else
+		echo >&2 'Error: this installer needs the ability to run commands as root.'
+		echo >&2 'We are unable to find either "sudo" or "su" available to make this happen.'
+		exit 1
+	fi
+fi
+
+curl=''
+if command_exists curl; then
+	curl='curl -sSL'
+elif command_exists wget; then
+	curl='wget -qO-'
+elif command_exists busybox && busybox --list-modules | grep -q wget; then
+	curl='busybox wget -qO-'
+fi
+
+# perform some very rudimentary platform detection
+lsb_dist=''
+if command_exists lsb_release; then
+	lsb_dist="$(lsb_release -si)"
+  distro_version="$(lsb_release -rs)"
+  distro_codename="$(lsb_release -cs)"
+fi
+if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then
+	lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")"
+fi
+if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then
+	lsb_dist='Debian'
+fi
+if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then
+	lsb_dist='Fedora'
+fi
+if [ -z "$lsb_dist" ] && [ -r /etc/redhat-release ]; then
+	lsb_dist='Fedora'
+fi
+
+case "$lsb_dist" in
+	Fedora)
+		(
+			set -x
+      $sh_c 'yum -y groupinstall "Development tools"'
+      $sh_c 'yum -y install zlib-devel bzip2-devel openssl-devel sqlite-devel libpcap-devel libffi-devel libevent-devel libgeoip-devel tor python-pip'
+      $sh_c 'pip install ooniprobe'
+		)
+
+    non_root_usage
+		exit 0
+		;;
+
+	Ubuntu|Debian)
+		export DEBIAN_FRONTEND=noninteractive
+
+		did_apt_get_update=
+		apt_get_update() {
+			if [ -z "$did_apt_get_update" ]; then
+				( set -x; $sh_c 'sleep 3; apt-get update' )
+				did_apt_get_update=1
+			fi
+		}
+    
+    (
+      set -x
+		  $sh_c 'apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-keys A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89'
+			$sh_c "echo deb $TOR_DEB_REPO $distro_codename main > /etc/apt/sources.list.d/tor.list"
+      $sh_c 'apt-get update'
+    )
+
+    if [ "$lsb_dist" == 'Debian' ] && 
+      [ "$(echo $distro_version | cut -d '.' -f1 )" -gt $MIN_DEBIAN_VERSION ]; then
+      (
+        set -x
+        $sh_c 'apt-get install -y -q ooniprobe'
+      )
+    elif [ "$lsb_dist" == 'Ubuntu' ] &&
+      [ "$(echo $distro_version | cut -d '.' -f1 )" -gt $MIN_UBUNTU_VERSION ]; then
+      (
+        set -x
+        $sh_c 'apt-get install -y -q ooniprobe'
+      )
+    else
+      (
+        set -x
+        $sh_c 'apt-get install -y -q curl git-core python python-dev python-setuptools build-essential libdumbnet1 python-dumbnet python-libpcap tor tor-geoipdb libgeoip-dev libpcap0.8-dev libssl-dev libffi-dev libdumbnet-dev'
+        $sh_c 'pip install ooniprobe'
+      )
+    fi
+
+    # if [ "$lsb_dist" == 'Ubuntu' ];then
+    #   (
+    #     set -x
+    #     $sh_c 'apt-get install -y -q python-virtualenv'
+    #   )
+    # elif [ "$lsb_dist" == 'Debian' ];then
+    #   (
+    #     set -x
+    #     $sh_c 'apt-get install -y -q virtualenvwrapper'
+    #   )
+    # fi
+
+    non_root_usage
+		exit 0
+		;;
+
+	# Gentoo)
+	# 	exit 0
+	# 	;;
+esac
+
+echo >&2
+echo >&2 '  Either your platform is not easily detectable, is not supported by this'
+echo >&2 '  installer script (yet - PRs welcome!), or does not yet have a package for'
+echo >&2 '  ooniprobe. Please visit the following URL for more detailed installation'
+echo >&2 '  instructions:'
+echo >&2
+echo >&2 '    https://ooni.torproject.org/docs/'
+echo >&2
+exit 1





More information about the tor-commits mailing list