Kaynağa Gözat

update install script for new repos

Signed-off-by: Jessica Frazelle <princess@docker.com>
Jessica Frazelle 10 yıl önce
ebeveyn
işleme
451d3f5950
1 değiştirilmiş dosya ile 72 ekleme ve 45 silme
  1. 72 45
      hack/install.sh

+ 72 - 45
hack/install.sh

@@ -6,7 +6,12 @@ set -e
 # or:
 #   'wget -qO- https://get.docker.com/ | sh'
 #
-# If you're interested in the daily experimental build:
+# For test builds (ie. release candidates):
+#   'curl -sSL https://test.docker.com/ | sh'
+# or:
+#   'wget -qO- https://test.docker.com/ | sh'
+#
+# For experimental builds:
 #   'curl -sSL https://experimental.docker.com/ | sh'
 # or:
 #   'wget -qO- https://experimental.docker.com/ | sh'
@@ -25,6 +30,12 @@ command_exists() {
 }
 
 echo_docker_as_nonroot() {
+	if command_exists docker && [ -e /var/run/docker.sock ]; then
+		(
+			set -x
+			$sh_c 'docker version'
+		) || true
+	fi
 	your_user=your-user
 	[ "$user" != 'root' ] && your_user="$user"
 	# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-EOF", spaces are kept in the output
@@ -95,47 +106,60 @@ do_install() {
 		curl='busybox wget -qO-'
 	fi
 
+	# check to see which repo they are trying to install from
+	repo='main'
+	if [ "https://test.docker.com/" = "$url" ]; then
+		repo='testing'
+	elif [ "https://experimental.docker.com/" = "$url" ]; then
+		repo='experimental'
+	fi
+
 	# perform some very rudimentary platform detection
 	lsb_dist=''
+	dist_version=''
 	if command_exists lsb_release; then
 		lsb_dist="$(lsb_release -si)"
+		dist_version="$(lsb_release --codename | cut -f2)"
 	fi
 	if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then
 		lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")"
+		dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
 	fi
 	if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then
 		lsb_dist='debian'
+		dist_version="$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')"
+		case "$dist_version" in
+			8)
+				dist_version="jessie"
+				;;
+
+			7)
+				dist_version="wheezy"
+				;;
+		esac
 	fi
 	if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then
 		lsb_dist='fedora'
+		dist_version="$(rpm -qa \*-release | cut -d"-" -f3)"
 	fi
-	if [ -z "$lsb_dist" ] && [ -r /etc/centos-release ]; then
-		lsb_dist='centos'
+	if [ -z "$lsb_dist" ]; then
+		if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then
+			lsb_dist='centos'
+			dist_version="$(rpm -qa \*-release | cut -d"-" -f3)"
+		fi
 	fi
 	if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then
 		lsb_dist="$(. /etc/os-release && echo "$ID")"
+		dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
 	fi
 
 	lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
 	case "$lsb_dist" in
-		amzn|fedora|centos)
-			if [ "$lsb_dist" = 'amzn' ]; then
-				(
-					set -x
-					$sh_c 'sleep 3; yum -y -q install docker'
-				)
-			else
-				(
-					set -x
-					$sh_c 'sleep 3; yum -y -q install docker-io'
-				)
-			fi
-			if command_exists docker && [ -e /var/run/docker.sock ]; then
-				(
-					set -x
-					$sh_c 'docker version'
-				) || true
-			fi
+		amzn)
+			(
+			set -x
+			$sh_c 'sleep 3; yum -y -q install docker'
+			)
 			echo_docker_as_nonroot
 			exit 0
 			;;
@@ -145,17 +169,11 @@ do_install() {
 				set -x
 				$sh_c 'sleep 3; zypper -n install docker'
 			)
-			if command_exists docker && [ -e /var/run/docker.sock ]; then
-				(
-					set -x
-					$sh_c 'docker version'
-				) || true
-			fi
 			echo_docker_as_nonroot
 			exit 0
 			;;
 
-		ubuntu|debian|linuxmint|'elementary os'|kali)
+		ubuntu|debian)
 			export DEBIAN_FRONTEND=noninteractive
 
 			did_apt_get_update=
@@ -209,30 +227,39 @@ do_install() {
 				curl='curl -sSL'
 			fi
 			(
-				set -x
-				if [ "https://get.docker.com/" = "$url" ]; then
-					$sh_c "apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9"
-				elif [ "https://test.docker.com/" = "$url" ]; then
-					$sh_c "apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 740B314AE3941731B942C66ADF4FD13717AAD7D6"
-				elif [ "https://experimental.docker.com/" = "$url" ]; then
-					$sh_c "apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys E33FF7BF5C91D50A6F91FFFD4CC38D40F9A96B49"
-				else
-					$sh_c "$curl ${url}gpg | apt-key add -"
-				fi
-				$sh_c "mkdir -p /etc/apt/sources.list.d"
-				$sh_c "echo deb ${url}ubuntu docker main > /etc/apt/sources.list.d/docker.list"
-				$sh_c 'sleep 3; apt-get update; apt-get install -y -q lxc-docker'
+			set -x
+			$sh_c "apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D"
+			$sh_c "mkdir -p /etc/apt/sources.list.d"
+			$sh_c "echo deb https://apt.dockerproject.org/repo ${lsb_dist}-${dist_version} ${repo} > /etc/apt/sources.list.d/docker.list"
+			$sh_c 'sleep 3; apt-get update; apt-get install -y -q docker-engine'
 			)
-			if command_exists docker && [ -e /var/run/docker.sock ]; then
+			echo_docker_as_nonroot
+			exit 0
+			;;
+
+		fedora|centos)
+			cat >/etc/yum.repos.d/docker-${repo}.repo <<-EOF
+			[docker-${repo}-repo]
+			name=Docker ${repo} Repository
+			baseurl=https://yum.dockerproject.org/repo/${repo}/${lsb_dist}/${dist_version}
+			enabled=1
+			gpgcheck=1
+			gpgkey=https://yum.dockerproject.org/gpg
+			EOF
+			if [ "$lsb_dist" = "fedora" ] && [ "$dist_version" -ge "22" ]; then
 				(
 					set -x
-					$sh_c 'docker version'
-				) || true
+					$sh_c 'sleep 3; dnf -y -q install docker-engine'
+				)
+			else
+				(
+					set -x
+					$sh_c 'sleep 3; yum -y -q install docker-engine'
+				)
 			fi
 			echo_docker_as_nonroot
 			exit 0
 			;;
-
 		gentoo)
 			if [ "$url" = "https://test.docker.com/" ]; then
 				# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output