-
-
Save eplord/7b1d2da1fbc7eb5e748a5e2f15723085 to your computer and use it in GitHub Desktop.
Install latest version of golang
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Install latest version of golang | |
| # | |
| # https://gist.github.com/eplord/7b1d2da1fbc7eb5e748a5e2f15723085/raw/go | |
| # Usage : curl -fsSL https://tinyurl.com/yc46thx4 | bash | |
| # https://gist.github.com/eplord/c39ebb75fd8c318e207f7ece60d3cddb/raw/_utils | |
| source /dev/stdin <<<"$(curl -fsSL https://tinyurl.com/yck6pv5e)" | |
| # [[ -z "${GOROOT}" ]] && export GOROOT="/usr/lib/go" | |
| # [[ -z "${GOPATH}" ]] && export GOPATH="$HOME/.local/share/go" | |
| # [[ -z "${GOBIN}" ]] && export GOTOOLS="$GOPATH/bin" | |
| # [[ -z "${GOTOOLS}" ]] && export GOBIN="$GOPATH/tools" | |
| # if [ -n "$($SHELL -c 'echo $ZSH_VERSION')" ]; then | |
| # shell_profile="$HOME/.zshrc" | |
| # elif [ -n "$($SHELL -c 'echo $BASH_VERSION')" ]; then | |
| # shell_profile="$HOME/.bashrc" | |
| # fi | |
| # # ---------------------------------------------------------------------------- | |
| # sudo echo "" | |
| # doing "Verifying version..." | |
| # GO_LATEST=$(curl -s https://go.dev/dl/ | grep -oP '\/dl\/go([0-9\.]+)\.linux-amd64\.tar\.gz' | head -n 1 | grep -oP 'go[0-9\.]+' | grep -oP '[0-9\.]+' | head -c -2) | |
| # GO_LOCAL=$(go version 2>/dev/null | cut -d ' ' -f 3 | cut -b 3-) | |
| # success | |
| # if [[ "$GO_LATEST" == "$GO_LOCAL" ]]; then | |
| # success_msg "Latest version of Go is already installed" | |
| # exit 0 | |
| # fi | |
| # mkdir -p "$GOPATH/"{bin,pkg,src,tools} | |
| # doing "Downloading Go v$GO_LATEST..." | |
| # wget -cq "https://golang.org/dl/go$GO_LATEST.linux-amd64.tar.gz" | |
| # success | |
| # doing "Installing Go v$GO_LATEST..." | |
| # sudo rm -rf "$GOROOT" | |
| # sudo tar -C "$GOROOT" --strip-components=1 -xzf "go$GO_LATEST.linux-amd64.tar.gz" | |
| # sudo rm "go$GO_LATEST.linux-amd64.tar.gz" | |
| # success | |
| # # ---------------------------------------------------------------------------- | |
| # echo -e "\nGo $GO_LATEST was installed into $GOROOT with Go Path in $GOPATH\nMake sure to relogin into your shell or run:" | |
| # echo -e "\n\tsource $shell_profile\n\nto update your environment variables." | |
| [[ -z "${GOROOT}" ]] && export GOROOT="/usr/lib/go" || echo "GOROOT=${GOROOT}" | |
| [[ -z "${GOPATH}" ]] && export GOPATH="$HOME/.local/share/go" || echo "GOPATH=${GOPATH}" | |
| [[ -z "${GOBIN}" ]] && export GOTOOLS="$GOPATH/bin" || echo "GOBIN=${GOBIN}" | |
| [[ -z "${GOTOOLS}" ]] && export GOBIN="$GOPATH/tools" || echo "GOTOOLS=${GOTOOLS}" | |
| if [ -n "$($SHELL -c 'echo $ZSH_VERSION')" ]; then | |
| shell_profile="$HOME/.zshrc" | |
| elif [ -n "$($SHELL -c 'echo $BASH_VERSION')" ]; then | |
| shell_profile="$HOME/.bashrc" | |
| fi | |
| # ---------------------------------------------------------------------------- | |
| echo -e '\nFinding latest version of Go ...\n' | |
| base_url="https://go.dev" | |
| PATH_URL="$(wget --no-check-certificate -qO- ${base_url}/dl/ | grep -oP '\/dl\/go([0-9\.]+)\.linux-amd64\.tar\.gz' | head -n 1)" | |
| latest="$(echo $PATH_URL | grep -oP 'go[0-9\.]+' | grep -oP '[0-9\.]+' | head -c -2 )" | |
| # ---------------------------------------------------------------------------- | |
| mkdir -p "${GOPATH}/"{src,pkg,bin,tools} | |
| echo '\nDownloading latest Go: ${latest}\n' | |
| wget --no-check-certificate --continue --show-progress "$base_url$PATH_URL" -P $GOTOOLS | |
| unset PATH_URL | |
| # ---------------------------------------------------------------------------- | |
| LATEST="$(find $GOTOOLS -name "go*" -type f | head -n 1)" | |
| echo "LATEST: ${LATEST}" | |
| echo "Extracting File..." | |
| sudo mkdir -p "$GOROOT" | |
| sudo tar -C "$GOROOT" --strip-components=1 -xzf "$LATEST" | |
| sudo chmod -R 755 "$GOROOT" | |
| # ---------------------------------------------------------------------------- | |
| echo -e "\nGo $latest was installed into $GOROOT with Go Path in $GOPATH\nMake sure to relogin into your shell or run:" | |
| echo -e "\n\tsource $shell_profile\n\nto update your environment variables." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment