在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 背景 在当前的中国网络环境下,我们无法访问Google的服务的,包括Golang.org。从第三方网站下载预编译的二进制Go发行版可能存在第三方源代码注入的风险,例如之前的XcodeGhost。 2. 问题Go1.7的编译过程需要Go1.4的执行文件来实现 bootstrap(自举)(简单来说: Go需要Go自身来编译,搭建go1.5及以上版本的编译环境需要先安装go1.4版本) 3. 解决方案从Github的Go仓库镜像获取Go的源代码 首先编译Go1.4(只需要gcc和glibc-devel,不需要Go来编译,由此可见go1.4.x 是个特殊的版本!) 3.1 准备
需要从github上拉代码,得先注册一个github账号(https://github.com) 然后在 linux 执行 > git config --global user.email "email-for-github" > git config --global user.name "user name"
> ssh-keygen -t rsa -b 2048 > ssh-add ~/.ssh/id_rsa 复制 ~/.ssh/id_rsa.pub 中的 Public Key 到 github SSH settings 以添加新的 SSH key
> sudo yum install gcc glibc-devel 3.2 从源代码编译安装Go1.4
cd /opt tar xvf tar xvf go1.4.3.src.tar.gz
cd go/src ./all.bash cp -rp /opt/go /usr/local/go1.4
$GOROOT_BOOTSTRAP(默认值是~/go1.4,编译go1.5及以上版本必需) vim /etc/profile # Golang Env export GOROOT_BOOTSTRAP=/usr/local/go1.4 export PATH=$PATH:$GOROOT_BOOTSTRAP source /etc/profile 3.3 从源代码编译安装Go1.11
wget https://studygolang.com/dl/golang/go1.11.src.tar.gz mkdir /opt/mygo tar xvf go1.11.src.tar.gz -C /opt/mygo
cd /opt/mygo/go/src ./all.bash cp -rp /opt/mygo/go /usr/local/go
vim /etc/profile 在 # Golang Env 下添加 export GOROOT=/usr/local/go #提前创建 go 工作目录 mkdir /opt/goWork 在 /etc/profile 添加环境变量 export GOPATH=/opt/goWork export GOBIN=$GOROOT/bin vim /etc/profile 修改 /etc/profile 中的PATH 环境变量 export PATH=$PATH:$GOROOT_BOOTSTRAP:$GOPATH:$GOBIN source /etc/profile 注:
工作目录介绍 工作区是一个目录层次结构,它的根目录有三个目录:
退出shell重新登录 go version go version go1.7 linux/amd64 4. go 工作目录所有Go可执行程序都通过静态方式链接在一起,所以在运行时是不需要相关的包对象(库) go install 会把库文件 xxx.a 放到 $GOPATH/pkg 相应的 arch 下面,这样 go命令可以直接找到对应的包对象,避免不必要的重复编译 linux_amd64是为了根据操作系统和你的系统架构交叉编译 当你建立工作空间目录后,你需要把工作空间目录的路径添加的GOPATH环境变量中。GOPATH环境变量支持多个值,如果你有多个工作空间,可以把多个工作空间值都添加到这个环境变量中,window系统使用分号";"分隔不同值,Linux或Unix系统使用冒号”:“分隔不同值。另外,还要将所有工作空间的bin路径添加到PATH环境变量中 当然,如果你的工作空间不止一个,PATH变量中不能直接使用$GOPATH/bin,要分别将各个工作空间中的bin路径添加进去。 需要注意的是,GOPATH环境变量的值不能与安装的go目录相同。go目录中同样有src、pkg、bin等类似工作空间的目录结构,不过其中包含的是go的标准模块,最好不要讲自己的工作空间和go目录混合 通常 项目代码目录 建成 $GOPATH/src/github.com/ [ nsq ] 的形式 5. package 引用默认 先会到 $GOROOT/src 下查找 其次到 $GOPATH/src 下查找 $GOPATH/src 下的目录结构最好跟 github 上保持一致,方便拉取github上的代码
参考资料: https://github.com/northbright/Notes/blob/master/Golang/china/install-go1.6-from-source-on-centos7-in-china.md https://github.com/northbright/Notes/tree/master/Golang/china http://www.cnblogs.com/mountaingeek/p/5951156.html go 源码下载 https://studygolang.com/dl 遇到的问题 1. 解决:ssh-add ~/.ssh/id_rsa ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add ssh-add -l 查看ssh-agent中的秘钥 |
请发表评论