前言 golang 的安装还是比较友好,两种方式安装:
tar包安装 一般是直接上官网下载安装,不同版本功能还不一样,也可以使用脚本来快速安装。
https://golang.org/dl
也可以参考官方安装文档https://golang.org/doc/install#install
如果需要其他版本 选 Archived versions 可以查看之前的发行版
下载和配置环境变量
wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
/etc/profile中添加以下内容
export PATH=$PATH:/usr/local/src/go/bin
验证一下
go version
脚本安装 开发环境安装通常使用脚本快速安装
创建文件 1 2 touch install.sh chmod u+x install.sh
添加脚本 脚本会在当前用户下创建 go 目录,写入 .bash_profile 中VERSION
是版本号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 cat > install.sh <<"EOF" # !/bin/bash set -e VERSION="1.16.4" [ -z "$GOROOT" ] && GOROOT="$HOME/.go" [ -z "$GOPATH" ] && GOPATH="$HOME/go" OS="$(uname -s)" ARCH="$(uname -m)" case $OS in "Linux") case $ARCH in "x86_64") ARCH=amd64 ;; "armv6") ARCH=armv6l ;; "armv8") ARCH=arm64 ;; .*386.*) ARCH=386 ;; esac PLATFORM="linux-$ARCH" ;; "Darwin") PLATFORM="darwin-amd64" ;; esac print_help() { echo "Usage: bash goinstall.sh OPTIONS" echo -e "\nOPTIONS:" echo -e " --remove\tRemove currently installed version" } if [ -n "`$SHELL -c 'echo $ZSH_VERSION'`" ]; then shell_profile="zshrc" elif [ -n "`$SHELL -c 'echo $BASH_VERSION'`" ]; then shell_profile="bashrc" fi PACKAGE_NAME="go$VERSION.$PLATFORM.tar.gz" if [ "$1" == "--remove" ]; then rm -rf "$GOROOT" if [ "$OS" == "Darwin" ]; then sed -i "" '/# GoLang/d' "$HOME/.${shell_profile}" sed -i "" '/export GOROOT/d' "$HOME/.${shell_profile}" sed -i "" '/$GOROOT\/bin/d' "$HOME/.${shell_profile}" sed -i "" '/export GOPATH/d' "$HOME/.${shell_profile}" sed -i "" '/$GOPATH\/bin/d' "$HOME/.${shell_profile}" else sed -i '/# GoLang/d' "$HOME/.${shell_profile}" sed -i '/export GOROOT/d' "$HOME/.${shell_profile}" sed -i '/$GOROOT\/bin/d' "$HOME/.${shell_profile}" sed -i '/export GOPATH/d' "$HOME/.${shell_profile}" sed -i '/$GOPATH\/bin/d' "$HOME/.${shell_profile}" fi echo "Go removed." exit 0 elif [ "$1" == "--help" ]; then print_help exit 0 elif [ ! -z "$1" ]; then echo "Unrecognized option: $1" exit 1 fi if [ -d "$GOROOT" ]; then echo "The Go install directory ($GOROOT) already exists. Exiting." exit 1 fi echo "Downloading $PACKAGE_NAME ..." if hash wget 2>/dev/null; then wget https://storage.googleapis.com/golang/$PACKAGE_NAME -O /tmp/go.tar.gz else curl -o /tmp/go.tar.gz https://storage.googleapis.com/golang/$PACKAGE_NAME fi if [ $? -ne 0 ]; then echo "Download failed! Exiting." exit 1 fi echo "Extracting File..." mkdir -p "$GOROOT" tar -C "$GOROOT" --strip-components=1 -xzf /tmp/go.tar.gz touch "$HOME/.${shell_profile}" { echo '# GoLang' echo "export GOROOT=${GOROOT}" echo 'export PATH=$GOROOT/bin:$PATH' echo "export GOPATH=$GOPATH" echo 'export PATH=$GOPATH/bin:$PATH' echo "export GOBIN=$GOPATH/bin" } >> "$HOME/.${shell_profile}" mkdir -p $GOPATH/{src,pkg,bin} echo -e "\nGo $VERSION was installed into $GOROOT.\nMake sure to relogin into your shell or run:" echo -e "\n\tsource $HOME/.${shell_profile}\n\nto update your environment variables." echo "Tip: Opening a new terminal window usually just works. :)" rm -f /tmp/go.tar.gz EOF
执行 1 2 sh install.sh source .bash_profile