mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-11 16:24:11 +01:00
102 lines
2.6 KiB
Bash
Executable File
102 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Downloads and installs the Go compiler on Linux.
|
|
# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-go.sh)
|
|
|
|
PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH"
|
|
|
|
# Show usage information?
|
|
if [[ ${1} == "--help" ]]; then
|
|
echo "${0##*/} [version] [destdir] downloads and installs the Go compiler on Linux, for example:" 1>&2
|
|
echo "${0##*/}" 1>&2
|
|
echo "${0##*/} latest" 1>&2
|
|
echo "${0##*/} 1.23.4 /usr/local" 1>&2
|
|
exit 0
|
|
fi
|
|
|
|
set -e
|
|
set +x
|
|
|
|
# Check version to be installed:
|
|
GOLANG_VERSION=${1:-$GOLANG_VERSION}
|
|
|
|
if [[ -z $GOLANG_VERSION ]] || [[ $GOLANG_VERSION == "latest" ]]; then
|
|
GOLANG_VERSION=$(curl -fsSL https://go.dev/VERSION?m=text | head -n 1)
|
|
fi
|
|
|
|
GOLANG_VERSION=${GOLANG_VERSION#"go"}
|
|
|
|
if [[ -z $GOLANG_VERSION ]]; then
|
|
echo "Go compiler version must be passed as first argument, e.g. 1.23.4" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
# Check destination directory:
|
|
DESTDIR=$(realpath "${2:-/usr/local}")
|
|
|
|
if [[ -z $DESTDIR ]] || [[ $DESTDIR == "default" ]]; then
|
|
DESTDIR="/usr/local"
|
|
fi
|
|
|
|
# Determine the system architecture:
|
|
if [[ $PHOTOPRISM_ARCH ]]; then
|
|
SYSTEM_ARCH=$PHOTOPRISM_ARCH
|
|
else
|
|
SYSTEM_ARCH=$(uname -m)
|
|
fi
|
|
|
|
DESTARCH=${BUILD_ARCH:-$SYSTEM_ARCH}
|
|
|
|
# Start installation:
|
|
echo "Installing Go ${GOLANG_VERSION} for ${DESTARCH^^} in \"${DESTDIR}\". Please wait."
|
|
|
|
sudo mkdir -p "$DESTDIR"
|
|
|
|
case $DESTARCH in
|
|
amd64 | AMD64 | x86_64 | x86-64)
|
|
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz"
|
|
;;
|
|
|
|
arm64 | ARM64 | aarch64)
|
|
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-arm64.tar.gz"
|
|
;;
|
|
|
|
arm | ARM | aarch | armv7l | armhf)
|
|
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-armv6l.tar.gz"
|
|
;;
|
|
|
|
*)
|
|
echo "Unsupported Machine Architecture: \"$DESTARCH\"" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Replace current installation in "$DESTDIR/go":
|
|
echo "Extracting \"${URL}\" to \"${DESTDIR}/go\"..."
|
|
set -eux;
|
|
sudo rm -rf "${DESTDIR}/go"
|
|
curl -fsSL "${URL}" | sudo tar -xz -C "${DESTDIR}"
|
|
set +x
|
|
echo "Done."
|
|
|
|
# Add symlink to go binary:
|
|
echo "Adding symbolic links for \"${DESTDIR}/go/bin/go\" and \"${DESTDIR}/go/bin/gofmt\"..."
|
|
set -eux;
|
|
sudo ln -sf "${DESTDIR}/go/bin/go" /usr/local/bin/go
|
|
sudo ln -sf "${DESTDIR}/go/bin/gofmt" /usr/local/bin/gofmt
|
|
set +x
|
|
echo "Done."
|
|
|
|
# Telemetry in Go >= 1.23 should be set to "off" in ~/.config/go/telemetry, see https://go.dev/doc/telemetry.
|
|
# You can do this by running "go telemetry off":
|
|
echo "Disabling Go telemetry..."
|
|
set +e -x;
|
|
mkdir -p ~/.config/go
|
|
go telemetry off
|
|
set +x
|
|
|
|
# Test go command by showing installed Go version:
|
|
echo "Installed Go version:"
|
|
go version
|
|
|
|
echo "Enjoy!" |