在Ubuntu上更新golang

我使用的是Ubuntu 14.4.03操作系统。默认安装的golang版本是1.2.1。我想将golang更新到1.4或更高版本。
经过搜索,我发现更新的方法是先删除当前的go安装,然后重新安装新版本。
我在以下目录中找到了以下go安装文件:
/usr/share/go
/usr/share/go/src/cmd/go
/usr/share/go/src/pkg/go
/usr/lib/go
/ur/lib/go/pkg/linux_amd64/go
/ur/lib/go/pkg/linux_amd64_race/go
/usr/bin/go

哪个目录包含什么内容?我应该删除哪些?新安装的位置应该是什么?似乎/usr/local更常见。那么为什么Ubuntu的默认设置是上述的呢?
安装新版本的golang的步骤是什么?
谢谢。

https://stackoverflow.com/questions/16977703/cant-get-golang-to-work-in-ubuntu/41323785#41323785 - Scott Stensland
12个回答

ppa:evarlast/golang1.4对我来说不起作用。下面是手动安装Go的方法。

有关更详细的安装说明,请参阅在Linux上安装最新的Golang

步骤1:删除现有的golang

sudo apt-get purge golang*
第二步:从官方网站下载最新版本。点击这里 第三步:使用以下命令将其解压到/usr/local目录中。我这里使用的是Go 1.11.4版本。根据您下载的版本,您可能需要替换文件名为实际的文件名。
tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gz

第四步:在主目录中创建.go文件夹。(无需管理员权限即可轻松安装所需软件包)
mkdir ~/.go

第五步:設置以下環境變量

GOROOT=/usr/local/go
GOPATH=~/.go
PATH=$PATH:$GOROOT/bin:$GOPATH/bin

点击这个链接如何永久设置环境变量第六步: 更新go命令。
sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go/bin/go" 0
sudo update-alternatives --set go /usr/local/go/bin/go

第七步:测试Golang版本
go version

2我非常喜欢这个回答,因为它很好地描述了Debian替代系统的工作原理!+1 - fgbreel
这对我来说无法从1.8升级到1.9。这里的官方指南https://github.com/golang/go/wiki/Ubuntu也没有起作用。 - Karlom
这是正确的解决方案,除了tar命令无效之外,只需提供您的tar文件的完整名称即可。谢谢! - Montaro
传奇。非常感谢!不过,请更改tar命令行的文件名。 - Mihailo
1工作得很好,干杯! - PKumar
第一步没有完全删除go目录。运行sudo rm -rf /usr/local/go来删除它。如果你太害怕了,可以尝试用sudo mv /usr/local/go /usr/local/go_old来重命名它,然后在完成所有步骤后再删除它。 - evilReiko

首先,使用以下命令删除您当前的 `golang` 安装,您无需手动删除由 `apt-get` 安装的文件。
sudo apt-get purge golang

为了简便地安装golang 1.4,您可以使用这个PPA。
sudo add-apt-repository ppa:evarlast/golang1.4
sudo apt-get update

现在你可以使用
sudo apt-get install golang

这将安装版本1.4,这里是一个链接到PPA。

现在不起作用,因为ppa已被移除。下一个答案是有效的。 - Himanshu sharma

我找到了一个仍然活跃的替代(/个人)存储库,其中包含最新版本。然后,我获取了go-1.8,并从原始问题中的路径进行了链接。以下是bash命令:
sudo add-apt-repository ppa:gophers/archive
sudo apt-get update

sudo apt-get install golang-1.8

sudo ln /usr/lib/go-1.8/bin/go /usr/bin/go1.8

现在我只需要说go1.8而不是go,这样就可以使用最新的版本了。
该仓库提供了许多其他版本,所以你只需将版本号更改为例如1.4在上述脚本/命令中。

要在所有当前支持的Ubuntu版本中安装最新版本的Go编程语言,请打开终端并输入以下命令:
sudo snap install go --classic --channel stable 

你可能需要安装snapd支持,因为服务器安装默认情况下没有安装它。
sudo apt install snapd && sudo reboot

此快照为Go编程语言提供了汇编器、编译器、链接器和已编译的库。除了稳定通道外,还有其他通道,但稳定通道是Go编程语言的最新版本。当更新可用时,go快照包将自动更新。


对于在Ubuntu 17.04 Zesty到17.10 Artful上使用Golang 1.8的情况:
# sudo apt update
# sudo apt install golang-1.8 golang-1.8-doc
# for bin in /usr/lib/go-1.8/bin/* ; do
    sudo update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 0
    sudo update-alternatives --set $(basename $bin) $bin
  done

对于在Ubuntu 17.10 Artful到18.04 Bionic的Golang 1.9版本:
# sudo apt update
# sudo apt install golang-1.9 golang-1.9-doc
# for bin in /usr/lib/go-1.9/bin/* ; do
    sudo update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 0
    sudo update-alternatives --set $(basename $bin) $bin
  done

对于在Ubuntu 18.04 Bionic和18.10 Cosmic上的Golang 1.10版本:
# sudo apt update
# sudo apt install golang-1.10 golang-1.10-doc
# for bin in /usr/lib/go-1.10/bin/* ; do
    sudo update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 0
    sudo update-alternatives --set $(basename $bin) $bin
  done

你还可以使用update-golang脚本: update-golang是一个脚本,可以方便地获取和安装新的Golang版本,而且对系统干扰最小。
git clone https://github.com/udhos/update-golang
cd update-golang
sudo ./update-golang.sh

轻松安装和更新

使用 Go 版本管理器

# Add basic packages
sudo apt-get install curl git mercurial make binutils bison gcc build-essential

# Install GVM
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

# Install which version you want to install
gvm install go1.9

# Use it as default version
gvm use go1.9 --default

删除现有的golang

sudo apt-get purge golang*

如果尚未安装,请安装Snap。
sudo apt update
sudo apt install snapd

通过snap安装

sudo snap install go --classic


1嗯。公平地说,Python在大多数系统上安装正确也通常需要自定义脚本。请参见:https://askubuntu.com/questions/1296790/python-is-python3-package-in-ubuntu-20-04-what-is-it-and-what-does-it-actually在Windows上,为了使python在命令行上正常工作(而不必每次都指定python.exe的路径),还需要手动将其添加到PATH中。 - justinmvieira

从这个链接了解最新版本: https://golang.org/dl/

sudo apt-get purge golang*  # in case there is old version of go is installed

tar_name="go1.15.8.linux-amd64.tar.gz"  # get latest version from https://golang.org/dl/
wget https://golang.org/dl/$tar_name
tar -xvf $tar_name
rm -f $tar_name
sudo rm -rf /usr/local/go
sudo mv go /usr/local

# Add following lines into `.bashrc` or `.zshrc`
mkdir -p $HOME/go
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin