linux go环境搭建

安装

Centos系列可以找到相关的rpm包使用,直接使用
yum install -y golang
即可
ubuntu18.04 虽然提供了相关的deb包,但是版本太低,需要高版本的需要自己搭建环境
首先下载golang
按照说明解压:
tar -zxvf go1.13.5.linux-amd64.tar.gz -C /usr/local
修改配置文件 ~/.bash_profile 或者 ~/.profile

export GOROOT=/usr/local/go
#export GOPATH=/var/goproject
export PATH=$PATH:$GOROOT/bin
#goproxy use for mod
export GOPROXY=https://goproxy.io

执行:source ~/…bash_profile 或者source ~/.profile
然后执行:go env 测试环境变量是否生效

有关GOPATH和go mod

gopath 和 go mod不能同时使用
gopath 需要在工程目录下存在src目录,各种引用包需要手工下载
go mod无目录限制,但需要设置unset GOPATH
一个样例:
使用GOPATH
export GOPATH=./golang
需要存在目录:./golang/src/
使用go mod
对于./example,需要在对应目录下执行:
go mod init example
生成go.mod文件

局域网内单机go仓库

局域网内搭建go项目最麻烦的是下载各种mod,
由于不能直接访问golang.org、google.golang.org等,相关包的下载需要通过 goproxy.io这个代理下载
相关的mod下载后需要放在 :${GOROOT}/src
下载命令:go get -u mod-name
注意目录下需要有一个go.mod文件存在,不然可能出现mod无法下载等错误
下载后相关mod在:${GOPATH}/pkg/mod目录下,这个GOPATH是GO默认的:/var/goproject。对应的包命名格式:name@version,本地使用需要手工移动至${GOROOT}/src下
提供一个脚本来自动下载及转移:

#!/bin/bash
if [ -z ${1} ]; then
	echo "module is must!!!"
	exit 1
fi

curdir=`pwd`

#需要代理才能联网的在这里设置
#export http_proxy=
#export https_proxy=

if [ -z ${GOPROXY} ]; then
	export GOPROXY="https://goproxy.io"
fi

if [ "no" == "${GO111MODULE}" ]; then
	##on-开 off-关 auto-自动选择
	export GO111MODULE="auto"
fi

cd ${GOROOT}/src
cp ${GOROOT}/src/go.mod ${GOROOT}/src/go.mod.bak
cp ${GOROOT}/src/go.sum ${GOROOT}/src/go.sum.bak

echo "go get -u ${1}"
go get -u ${1}
if [ $? -ne 0 ]; then
	echo "go-get ${1} failed!"
	rm -f ${GOROOT}/src/go.mod
	mv ${GOROOT}/src/go.mod.bak ${GOROOT}/src/go.mod
	exit 1
else
	echo "go-get ${1} sucess!"
fi

cat ${GOROOT}/src/go.mod |grep ${1%%/*}|awk '{print $1"@"$2}'
echo "----------------------------------------------------------------"
count=0
while [ ${count} -ne $(cat ${GOROOT}/src/go.mod|grep ${1%%/*}|wc -l) ]; do
	let count+=1
	info="$(cat ${GOROOT}/src/go.mod|grep ${1%%/*}|awk 'NR=='${count}'{print $0}')"
	if [ $(echo ${info} |grep ${1%%/*}|awk '{print $1}') == "require" ]; then
		file="$(echo ${info} |grep ${1%%/*}|awk '{print $2"@"$3}')"
	else
		file="$(echo ${info} |grep ${1%%/*}|awk '{print $1"@"$2}')"
	fi
	
	mkdir -p ${GOROOT}/src/${file%/*}
	echo "mv ${GOPATH}/pkg/mod/${file} ${GOROOT}/src/${file%@*}"
	mv ${GOPATH}/pkg/mod/${file} ${GOROOT}/src/${file%@*}
	##root用户下载,提供给开发用户使用
	chmod -R 755 ${GOROOT}/src/${file%@*}
done

rm -rf ${GOROOT}/src/go.mod
mv ${GOROOT}/src/go.mod.bak ${GOROOT}/src/go.mod
rm -rf ${GOROOT}/src/go.sum
mv ${GOROOT}/src/go.sum.bak ${GOROOT}/src/go.sum

rm -rf ${GOPATH}/pkg
cd ${curdir}

例如保存为go-get.sh后,下载mod:
go-get.sh golang.org/x/net/http2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值