From 6f9aed1656d0d9ff1a22ed6a022120c6a4f43688 Mon Sep 17 00:00:00 2001 From: Anton Tolchanov Date: Fri, 27 Jan 2023 19:51:24 +0000 Subject: [PATCH] scripts: use pkg server to determine supported deb/rpm distros Fixes https://github.com/tailscale/corp/issues/8952 Signed-off-by: Anton Tolchanov --- scripts/installer.sh | 104 ++++++++----------------------------------- 1 file changed, 18 insertions(+), 86 deletions(-) diff --git a/scripts/installer.sh b/scripts/installer.sh index 721503e78..538bab5ac 100755 --- a/scripts/installer.sh +++ b/scripts/installer.sh @@ -293,83 +293,28 @@ main() { fi fi + # Ideally we want to use curl, but on some installs we + # only have wget. Detect and use what's available. + CURL= + if type curl >/dev/null; then + CURL="curl -fsSL" + elif type wget >/dev/null; then + CURL="wget -q -O-" + fi + if [ -z "$CURL" ]; then + echo "The installer needs either curl or wget to download files." + echo "Please install either curl or wget to proceed." + exit 1 + fi + # Step 2: having detected an OS we support, is it one of the # versions we support? OS_UNSUPPORTED= case "$OS" in - ubuntu) - if [ "$VERSION" != "xenial" ] && \ - [ "$VERSION" != "bionic" ] && \ - [ "$VERSION" != "eoan" ] && \ - [ "$VERSION" != "focal" ] && \ - [ "$VERSION" != "groovy" ] && \ - [ "$VERSION" != "hirsute" ] && \ - [ "$VERSION" != "impish" ] && \ - [ "$VERSION" != "jammy" ] && \ - [ "$VERSION" != "kinetic" ] && \ - [ "$VERSION" != "lunar" ] - then - OS_UNSUPPORTED=1 - fi - ;; - debian) - if [ "$VERSION" != "stretch" ] && \ - [ "$VERSION" != "buster" ] && \ - [ "$VERSION" != "bullseye" ] && \ - [ "$VERSION" != "bookworm" ] && \ - [ "$VERSION" != "sid" ] - then - OS_UNSUPPORTED=1 - fi - ;; - raspbian) - if [ "$VERSION" != "stretch" ] && \ - [ "$VERSION" != "buster" ] && \ - [ "$VERSION" != "bullseye" ] - then - OS_UNSUPPORTED=1 - fi - ;; - centos) - if [ "$VERSION" != "7" ] && \ - [ "$VERSION" != "8" ] && \ - [ "$VERSION" != "9" ] - then - OS_UNSUPPORTED=1 - fi - ;; - oracle) - if [ "$VERSION" != "7" ] && \ - [ "$VERSION" != "8" ] - then - OS_UNSUPPORTED=1 - fi - ;; - rhel) - if [ "$VERSION" != "7" ] && \ - [ "$VERSION" != "8" ] && \ - [ "$VERSION" != "9" ] - then - OS_UNSUPPORTED=1 - fi - ;; - amazon-linux) - if [ "$VERSION" != "2" ] && \ - [ "$VERSION" != "2022" ] && \ - [ "$VERSION" != "2023" ] - then - OS_UNSUPPORTED=1 - fi - ;; - opensuse) - if [ "$VERSION" != "leap/15.1" ] && \ - [ "$VERSION" != "leap/15.2" ] && \ - [ "$VERSION" != "leap/15.3" ] && \ - [ "$VERSION" != "leap/15.4" ] && \ - [ "$VERSION" != "tumbleweed" ] - then - OS_UNSUPPORTED=1 - fi + ubuntu|debian|raspbian|centos|oracle|rhel|amazon-linux|opensuse) + # Check with the package server whether a given version is supported. + URL="https://pkgs.tailscale.com/$TRACK/$OS/$VERSION/installer-supported" + $CURL "$URL" 2> /dev/null | grep -q OK || OS_UNSUPPORTED=1 ;; fedora) # All versions supported, no version checking required. @@ -474,19 +419,6 @@ main() { echo "Installing Tailscale for $OS $VERSION, using method $PACKAGETYPE" case "$PACKAGETYPE" in apt) - # Ideally we want to use curl, but on some installs we - # only have wget. Detect and use what's available. - CURL= - if type curl >/dev/null; then - CURL="curl -fsSL" - elif type wget >/dev/null; then - CURL="wget -q -O-" - fi - if [ -z "$CURL" ]; then - echo "The installer needs either curl or wget to download files." - echo "Please install either curl or wget to proceed." - exit 1 - fi export DEBIAN_FRONTEND=noninteractive if [ "$APT_KEY_TYPE" = "legacy" ] && ! type gpg >/dev/null; then $SUDO apt-get update