go install always attempts to use GOROOT and GOPATH is not listed under go env

前端 未结 4 1501
死守一世寂寞
死守一世寂寞 2020-12-31 13:19

I\'m having a quite frustrating problem with the GOPATH, which, despite being set in .profile, is not appearing when invoking go env,

相关标签:
4条回答
  • 2020-12-31 14:00

    I think it's quite clear that go install everything in your GOTOOLDIR, GOTOOLDIR is also related with GOROOT:

    Yours: GOROOT="/usr/lib/go"

    According to Document:

    Install the Go tools

    The Go binary distributions assume they will be installed in /usr/local/go (or c:\Go under Windows), but it is possible to install them in a different location. If you do this, you will need to set the GOROOT environment variable to that directory when using the Go tools.

    For example, if you installed Go to your home directory you should add the following commands to $HOME/.profile:

    export GOROOT=$HOME/go

    export PATH=$PATH:$GOROOT/bin

    Windows users should read the section about setting environment variables under Windows.

    You should follow these steps to change your GOROOT, instead of GOPATH, then everything should work.

    If it's not work, change GOTOOLDIR as well.

    0 讨论(0)
  • 2020-12-31 14:03

    GOPATH and workspaces

    $ mkdir -p $HOME/dev/go/src
    $ mkdir -p $HOME/dev/go/bin
    

    In $HOME/.profile:

    export GOPATH=$HOME/dev/go:
    export PATH=$PATH:$HOME/dev/go/bin
    

    Then reboot or log out and log in.

    As soon as you have logged in, before anything else, run:

    $ env | grep -i '^GO'
    GOPATH=/home/me/dev/go
    $ cat $HOME/.profile
    

    What output do you get?

    0 讨论(0)
  • 2020-12-31 14:19

    As you gave evidence for having set GOPATH, the second part of your question - GOPATH is not listed under go env - may be caused by the "go env" of your installed version. Neither go1 (linux) nor go1.0.2 (windows) versions of "go env" display GOPATH. If you look at the source (GOROOT/src/cmd/go/env.go), you'll find right at the top the list of elements to display (mkEnv) which starts with GOROOT and does not contain GOPATH.

    Version go1.0.3 (windows) does display GOPATH; the corresponding list in the source, however, starts with GOARCH.

    I admit that this does not solve the first part of your problem - (trying to) install into GOROOT - but perhaps the above will help you to focus on the culprit (build process).

    0 讨论(0)
  • 2020-12-31 14:21

    Create a soft link, then copy the go binary in /usr/local as follow:

    # ln -sf /usr/local/go/bin/go /usr/bin/go
    
    0 讨论(0)
提交回复
热议问题