首页 文章

'go install'尝试安装到/ usr / lib / go而不是我的GOPATH . 没有权限

提问于
浏览
5

我在Linux Mint 14上运行正常运行时遇到了一些困难 . 我有一个文件夹($ HOME / develop / gocode), binpkgsrc 文件夹作为我的 GOPATH ,并在那里正确设置了 GOPATH 环境变量 . 我尝试使用 go gethttps://github.com/jbarham/primegen.go)安装某个github存储库但是Go给了我错误: stat github.com/jbarham/primegen.go: no such file or directory (我想因为存储库以.go结尾 . )很好,我只是手动克隆它,但是当我尝试 go install 中的一个时该存储库中的可执行文件(两者都不起作用,但我尝试先安装primespeed)我收到以下错误:

$ cd $GOPATH/src/github.com/jbarham/primegen.go/primespeed
$ go install
go install github.com/jbarham/primegen.go: mkdir /usr/lib/go/pkg/linux_amd64/github.com: permission denied

为什么要尝试在那里安装包?我已经明确设置了我的 GOPATH 变量,但它正在尝试将软件包安装到/ usr / local .

我不确定它是否会有所帮助,但这里有一些关于版本和环境的其他输出:

$ go env
GOROOT="/usr/lib/go"
GOBIN=""
GOARCH="amd64"
GOCHAR="6"
GOOS="linux"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
$ go version
go version go1.0.2

3 回答

  • 5
    export GOPATH=$HOME/go
    
    export GOBIN=$HOME/go/bin
    

    试试吧 .

  • 0
    • 您的GOPATH可能未导出 .

    • 是的,具有 .go 扩展名的存储库不是'go gettable' .

    广告1.(最好放入.bashrc或同等版本):

    $ export GOPATH=$HOME # just an example
    

    广告2.(更好地提出关于无意义存储库名称的issue):

    $ mkdir -p $GOPATH/src/github.com/jbarham
    $ cd $GOPATH/src/github.com/jbarham
    $ git clone https://github.com/jbarham/primegen.go.git
    $ cd primegen.go
    $ go install
    
  • 6

    我有同样的问题,但发现,对于一些repos你需要专门添加导出 GOPATH . 例如来自我的 GOPATH

    cd $GOPATH
    export GOPATH=$PWD && go get -d github.com/nsf/gocode
    

    你可以一起避免它,我想,如果你的别名:

    alias goget='cd $GOPATH; export GOPATH=$PWD && go get'
    

    这并不完美,奇怪的是 export GOPATH=$GOPATH 不起作用 . 由于某种原因,某些repos正在将 GOPATH 重置为 $HOME 并尝试以其他用户身份执行 . 我的猜测是 go get 方法中的某些开发代码正在弄乱调用 . [只是预感,不要引用我]

相关问题