本文将重点介绍 golang 在 Linux上的安装 包括 debian9 centos7 fedora27+ alpine raspbian
因为平时需要用到一些 go语言 写的软件。比如 skicka 。当然有的软件会分发二进制文件,下载下来给予相应的权限直接运行就好了。但是很多软件不分发二进制,只 在 github 开放了源码。这时就需要我们手动编译了 。
先说一下 golang 从 1.8 开始不用设置变量环境。 golang 1.9 有新的 Alias
语法,所以我个人建议最低安装 golang1.8,尽量安装 golang1.9 以上的版本。
首先介绍 Debian9 的安装方式
debian9 默认源的 golang 版本是 1.7 这里先说明一下 golang1.7 安装与设置。但是我个人更建议 添加 backports 源安装 golang1.10 ,golang1.10 的安装将在稍后介绍
默认源的安装方式(ubuntu 也可以用这种方法安装):
更新源
sudo apt update
安装 golang
注:截至目前默认源的最新版本是 golang1.7
sudo apt install golang
然后按 y
确定安装, 安装完成后设置 变量环境
首先让我们来看一下 默认源安装的 golang的变量环 境,执行 go env
查看,以下是返回值:
root@19c6e084418b:/# go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go-1.7"
GOTOOLDIR="/usr/lib/go-1.7/pkg/tool/linux_amd64"
CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build532965355=/tmp/go-build -gno-record-gcc-switches"
CXX="g++" CGO_ENABLED="1"
root@19c6e084418b:/#
其中 GOPATH=""
这一项不手动指定的话会造成 go get
源码地址 失败。这也是我推荐安装 golang1.8+ 的原 因
如果需要设置全局变量 请编辑 /etc/profile 。 全局变量会对当前主机下的所有 用户 生效
执行:
sudo vi /etc/profile
按 i
进入编辑模式
在文件的最低部另起一行添加:
export GOPATH=$HOME/go
export GOBIN=$HOME/go/bin
然后按 ESC
键退出编辑模式,输入 :wq
保存并退出编辑器
执行 source
刷新变量环境:
sudo source /etc/profile
至此 golang 设置完毕 可以执行 go env
测试 一下 您会发现 GOPATH=”” 变成了 GOPATH=”当前用户HOME目录/go” 这就表示设置成功了
然后是 debian9 使用 backports源安装 golang 1.10
Backports 源的软件比 默认软件源新一点,而且 backports源也是 Debian 的官方源。关于 backports 的解释请查看 debian wiki Backports
执行以下命令添加 backports 源 这段命令在 root下执行 不是 root 的 请 sudo -i
或 su
切换到 root下执行。执行完这段命令就可以退出 root了。执行这段命 令时请三段一起复制进终端再执行,不要分开执行。
cat >> /etc/apt/sources.list.d/backports.list << EOF
deb http://deb.debian.org/debian $(lsb_release -sc)-backports main
EOF
更新软件源:
sudo apt update
安装 golang :
因为 backports 源的优先级比默认源低,所以需要使用 -t 参数指定软件源。如果不指定的话,安装的软件,还 是默认源的。
sudo apt install golang -t stretch-backports
检测安装版本:
go version
如果提示 go version go1.10 就安装完成了
Fedora27+ 安装 golang
fedora 默认源的软件几乎都比较新,直接从默认源安装就好了
更新软件源:
sudo dnf update
安装 golang:
sudo dnf install golang
查看 golang 版本 go version
查看变量环境 go env
Alpine 安装 golang
AlpineLinux 的包名和其他发行版 不太一样 其他发 行版的包名几乎都是 golang 。 而 alpine 的包名 go
更新软件源:
sudo apk update
安装 golang:
sudo apk add go
查看 golang 版本 go version
查看变量环境 go env
Centos7 安装 golang
centos 默认源支持 golang1.8
更新软件源:
sudo yum update
安装 golang:
sudo yum install golang
查看 golang 版本 go version
查看变量环境 go env
二进制安装方式
二进制的安装方式我将使用 树莓派 进行演示,因为平时使用的系统都可以 用源安装 版本较新的golang。
树莓派我使用的 raspbian 操作系统,ARM 的 cpu 架构,请下载符合你的操作系统的 cpu 架构的 预编译包
二进制的安装方式,理论上适合所有 linux 操作系统,包括安卓到 https://golang.org 下载最新版的 golang 二进制包,如果国内无法访问,请使用 https://golang.google.cn ,目前的最新版是 golang1.11
下载 编译好的二进制包
wget https://golang.org/dl/go1.15.6.linux-armv6l.tar.gz
解压 golang 编译器 到 /usr/local 目录
sudo tar -C /usr/local -xzvf go*.tar.gz
设置 linux 全局变量
sudo echo "export PATH=/usr/local/go/bin:\$PATH" >> /etc/profile
因为树莓派的全局变量无法 使用 source 刷新,所以我们退出一下终端,再重新连接。 其它 linux 操作系统可以使用 source /etc/profile
刷新变量
重新连接后运行 go env
查看变量环境,到这里 golang 就安装完成了
非 root 安装 golang
总的来说 非 root 方式安装 golang 和 二进制 方式安装 golang 非常相似只是把 golang 的预编译文件放在了不同的位置而已。非 root 方式安装 golang 我将使用 debian9 进行演示,适用于所有类 unix 平台
新建一个普通用户来安装 golang,然后设置密码以及详细信息。如果你打算安装在当前用户下就不用新建用户了
sudo adduser go
设置好密码以及信息后,切换到我们新建的用户
sudo su - go
到 https://golang.org/dl/ 选择符合你操作系统以及 cpu 构架 的安装包进行下载。我是 linux64位的操作系统所以我就直接下载 linux64位的安装包了
wget https://golang.org/dl/go1.15.6.darwin-amd64.tar.gz
新建一个用户用来存放 go 的预编译文件,这里我选择的是用来存放 用户信息的目录,然后赋予它本来就应该拥有的权限
mkdir ~/.local && chmod 700 ~/.local
解压缩 golang 到这个文件夹
tar -C ~/.local -xzvf go*.tar.gz
设置环境变量
echo "PATH=\"\$HOME/.local/go/bin:\$PATH\"" >> ~/.profile
刷新变量环境
source ~/.profile
然后 输入 go env
查看 go 的变量环境,不出意外的话到这里就安装完成了
篇外
如果不放心的话可以可以写个程序测试一下
新建 hello.go 写入以下内容
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
然后运行 hello.go
go run hello.go
不出意外的话 你的屏幕上应该会打印 Hello World
————— 最后 祝你玩的开心(*^_^*)