0%

golang 安装

本文将重点介绍 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 -isu 切换到 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

————— 最后 祝你玩的开心(*^_^*)