Windows 系统使用者, 抱歉这里没有你要的。
来源 |
---|
gist |
下面解释,大概三种方法
brew 使用者,当我没说。
Mac, Linux
根据这里的官方文档,要更新一个 go 版本,你先要删除现有版本。
常规来说,go 位于/usr/local/go
目录,删除如下:
sudo rm -rf /usr/local/go
去到下载页面,下载对应系统的压缩包。
推荐:迅雷或其他 P2p 网络。
解压命令:
sudo tar -C /usr/local -xzf $HOME/Downloads/go1.12.4.linux-amd64.tar.gz
PATH
包含/usr/local/go/bin
echo $PATH | grep "/usr/local/go/bin"
1. 在这一步,最麻烦的是,你可能进入不了官方网站,那么你需要代理或者
https://dl.google.com/go/go1.12.4.darwin-amd64.tar.gz
https://dl.google.com/go/go1.12.4.linux-386.tar.gz
https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
https://dl.google.com/go/go1.12.4.windows-amd64.msi
https://dl.google.com/go/go1.12.4.windows-amd64.zip
// 模版
https://dl.google.com/go/go「版本」.「系统」-「架构」.「压缩名」
请参照,模版下载链接,关于最新版本是多少,golang/go/releaser 会告诉你。
2. 下载缓慢
那么你(可以)试试迅雷,因为若是有前者下载过,迅雷的 P2p 网络,能让你飞起来。
Linux
该脚本,会下载压缩包,但不会删除旧版本,只会覆盖which
的优先级。
让其指向,新版本的 Go。
单行:
curl --silent https://storage.googleapis.com/golang/$(curl --silent https://golang.org/doc/devel/release.html | grep -Eo 'go[0-9]+(\.[0-9]+)+' | sort -V | uniq | tail -1).$(uname -s | tr '[:upper:]' '[:lower:]')-$(case "$(uname -m)" in i*) echo '386' ;; x*) echo 'amd64' ;; *) echo 'armv61'; esac).tar.gz | sudo tar -vxz --strip-components 1 -C $(dirname $(dirname $(which go)))
多行详细版本(如上面单行的功能相同):
release=$(curl --silent https://golang.org/doc/devel/release.html | grep -Eo 'go[0-9]+(\.[0-9]+)+' | sort -V | uniq | tail -1)
os=$(uname -s | tr '[:upper:]' '[:lower:]')
arch=$(case "$(uname -m)" in i*) echo '386' ;; x*) echo 'amd64' ;; *) echo 'armv61'; esac)
curl --silent https://storage.googleapis.com/golang/$release.$os-$arch.tar.gz \
| sudo tar -vxz --strip-components 1 -C $(dirname $(dirname $(which go)))
可以看到,这个脚本与常规方式的问题解答:下载链接模版,很相似。
release
就是版本,os
就是系统,arch
就是架构。
Mac 上会运行错误:主要是
arch
那行。
代理,如果curl
不加上代理,根本没用。(需要修改代码)
Mac,Linux
做得是 常规方式的功能,但运行一个脚本就好。
git clone https://github.com/udhos/update-golang
cd update-golang
sudo ./update-golang.sh
代理,下载命令同样是使用curl
或者wget
,默认都是没有代理的。
(需要修改源代码)
没有代理,第二和第三种,就不用想了。
我的更新方式,就是常规方式,只是下载工具是迅雷。(用不了多少时间)
关于 Windows 系统, 抱歉