我正在尝试在Ubuntu上设置go dev环境,但没有运气。按照此处的说明https://github.com/golang/go/wiki/Ubuntu
sudo apt-get install golang
然后我
mkdir $HOME/golang
export GOPATH=$HOME/golang
没有骰子。即使做一些像go version
之类的简单操作也会引发以下错误:
go: cannot find GOROOT directory: /usr/local/opt/go/libexec
我在网上看到的任何地方都说不要设置GOROOT
。请帮帮忙,我不明白从哪里开始。这是在新VM上的全新安装。
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/isaac/golang"
GORACE=""
GOROOT="/usr/local/opt/go/libexec"
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"
答案 0 :(得分:7)
在我安装的ubuntu机器上,按照以下简单步骤进行操作:
$ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz
$ rm go1.4.2.linux-amd64.tar.gz
添加到$ PATH变量
$ mkdir $HOME/go
$ nano ~/.bashrc
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
$ source ~/.bashrc
这项工作很好。
答案 1 :(得分:4)
所以我最终想出来了,男孩对我来说是愚蠢的。我有一个影响$GOROOT
的脚本,并且学到了很多东西。以下是重要的经验教训:
sudo apt-get install golang
它已过期,这样做意味着您现在必须还原安装。 sudo apt-get install golang-go
也已过期。不要使用apt-get
。sudo apt-get purge golang
不会重置环境变量或删除所有相关文件夹。 unset GOPATH GOHOME GOROOT
是重要的清理
只能从golang网站
tar.gz
安装
tar.gz
的所有内容都存在于您的系统中。通常为/usr/local/go
unset
mkdir
创建该文件夹以及设置GOPATH环境变量。$GOROOT/bin:$GOPATH/bin
才能使设置正常运行。影响.zshrc
或bashrc
或profile
的自定义脚本的使用不应包含$GOROOT
的设置!!
答案 2 :(得分:0)
这个答案是指默认Ubuntu存储库中的golang-go软件包,而不是可以使用ubuntu-make安装的go-lang软件包。
理解您的问题的关键是以下几行:
GOROOT="/usr/local/opt/go/libexec"
如果您输入命令echo $GOROOT
,它将返回:
/usr/local/opt/go/libexec
这不是你希望GOROOT从默认的Ubuntu存储库安装golang-go。在Ubuntu中,默认的golang-go安装GOROOT指的是安装go的目录的根目录。运行命令which go
将返回/usr/bin/go
并检查/usr/bin/go
文件,显示它已符号链接到位于/usr/lib/go-1.6/bin/go
的go可执行文件。有你失踪的GOROOT。如果你使用命令sudo apt install golang-go
安装golang-go,GOROOT是golang-go安装的所有go文件的根目录;它是/usr/lib/go-1.6
!
通过使用以下命令在nano文本编辑器中编辑环境文件,仍然可以将GOROOT中的更改应用于/etc/environment
:
sudo nano /etc/environment
在PATH="
中显示/etc/environment
后,插入以下文字将其添加到路径中:
/usr/lib/go-1.6:
按键盘组合 Ctrl + O 然后按 Enter 将要编辑的文件以nano保存到当前位置。按键盘组合 Ctrl + X 退出nano。
:
之后的/usr/lib/go-1.6
字符是分隔go路径和下一路径的分隔符。建议使用以下命令检查工作的准确性:
cat /etc/environment
现在您已经更新了PATH,您需要通过注销并重新登录来重新加载/etc/environment
。
答案 3 :(得分:0)
除了@sadlil的答案外,您还可以使用复合词GOPATH
。您可能有一个单独的目录,其中包含所有项目,并且希望保留此目录结构。在您的all_projects
目录中创建一个go目录,并将其附加到GOPATH
。
这是我的.bashrc
。
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
export GOPATH=$GOPATH:$HOME/all_projects/go # add projects directory
要注意的另一点是,go偏爱特定的目录结构。例如如果您在github.com上托管的项目上工作,则可以具有以下目录结构。
go
|-bin
|-pkg
|-src
|---github.com
|-----username
|-------reponame
此youtube video对于设置VS Code for go非常有用。