cannot download, $GOPATH not set

前端 未结 15 2002
闹比i
闹比i 2020-11-29 17:00

I want to install json2csv using go get github.com/jehiah/json2csv but I receive this error:

package github.com/jehiah/json2csv: cannot download         


        
相关标签:
15条回答
  • 2020-11-29 17:43

    Watch a Video

    In general, I always recommend this official video from Go to get a quick overview on the matter:

    http://www.youtube.com/watch?v=XCsL89YtqCs

    It's easier to be shown than to be told.

    @jwfearn paraphrased the important part of the video:

    export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"

    0 讨论(0)
  • 2020-11-29 17:44

    For MAC this worked well for me.

    sudo nano /etc/bashrc
    

    and add the below at the end of the file

    export PATH=$PATH:/usr/local/opt/go/libexec/bin
    export GOPATH=/usr/local/opt/go/bin
    

    This should fix the problem. Try opening a new terminal and echo $GOPATH you should see the correct value.

    0 讨论(0)
  • 2020-11-29 17:48

    You can use the "export" solution just like what other guys have suggested. I'd like to provide you with another solution for permanent convenience: you can use any path as GOPATH when running Go commands.

    Firstly, you need to download a small tool named gost : https://github.com/byte16/gost/releases . If you use ubuntu, you can download the linux version(https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz).

    Then you need to run the commands below to unpack it :

    $ cd /path/to/your/download/directory 
    $ tar -xvf gost_linux_amd64.tar.gz
    

    You would get an executable gost. You can move it to /usr/local/bin for convenient use:

    $ sudo mv gost /usr/local/bin
    

    Run the command below to add the path you want to use as GOPATH into the pathspace gost maintains. It is required to give the path a name which you would use later.

    $ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path
    

    Run any Go command you want in the format:

    gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
    

    For example, you want to run go get github.com/go-sql-driver/mysql with /home/foobar/bar as the GOPATH, just do it as below:

    $ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.
    

    It would help you to set the GOPATH and run the command. But remember that you have added the path into gost's pathspace. If you are under any level of subdirectories of /home/foobar/bar, you can even just run the command below which would do the same thing for short :

    $ gost get -- github.com/go-sql-driver/mysql
    

    gost is a Simple Tool of Go which can help you to manage GOPATHs and run Go commands. For more details about how to use it to run other Go commands, you can just run gost help goCmdName. For example you want to know more about install, just type words below in:

    $ gost help install
    

    You can also find more details in the README of the project: https://github.com/byte16/gost/blob/master/README.md

    0 讨论(0)
  • 2020-11-29 17:50

    I found easier to do it like this:

    export GOROOT=$HOME/go
    export GOPATH=$GOROOT/bin
    export PATH=$PATH:$GOPATH
    
    0 讨论(0)
  • 2020-11-29 17:50

    I am using vim to edit my .bashrc file but you code use a gui editor such as gedit.

    Steps:

    Kindly subsitute /path/to/golang/projects below with your actual path location where you will store your golang projects.

    Open .bashrc file in vim that is vim ~/.bashrc. Then add below lines at the end of the file.

    # Setup Golang Development Environment ::
    export GOROOT=/usr/local/go
    export PATH=$PATH:$GOROOT/bin
     
    # Third party go libraries will live under "~/golib" directory
    export GOPATH="$HOME/golib"
    export PATH="$PATH:$GOPATH/bin"
     
    # Where your golang project code lives
    export GOPATH=$GOPATH:/path/to/golang/projects
    

    Save the file and type source ~/.bashrc to refresh your terminal session. Now try getting a package e.g. go get github.com/pilu/fresh and check your ~/golib/bin directory it should have fresh package in it.

    Navigate to your /path/to/golang/projects and create three folders in there i.e. bin,src and pkg

    Now place your project folder inside /path/to/golang/projects/src e.g. /path/to/golang/projects/src/myfancygolangprojectand you should be good to go. Put all your golang codebase in there mate.

    0 讨论(0)
  • 2020-11-29 17:51

    Using brew

    I installed it using brew.

    $ brew install go
    

    When it was done if you run this brew command it'll show the following info:

    $ brew info go
    go: stable 1.4.2 (bottled), HEAD
    Go programming environment
    https://golang.org
    /usr/local/Cellar/go/1.4.2 (4676 files, 158M) *
      Poured from bottle
    From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
    ==> Options
    --with-cc-all
        Build with cross-compilers and runtime support for all supported platforms
    --with-cc-common
        Build with cross-compilers and runtime support for darwin, linux and windows
    --without-cgo
        Build without cgo
    --without-godoc
        godoc will not be installed for you
    --without-vet
        vet will not be installed for you
    --HEAD
        Install HEAD version
    ==> Caveats
    As of go 1.2, a valid GOPATH is required to use the `go get` command:
      https://golang.org/doc/code.html#GOPATH
    
    You may wish to add the GOROOT-based install location to your PATH:
      export PATH=$PATH:/usr/local/opt/go/libexec/bin
    

    The important pieces there are these lines:

    /usr/local/Cellar/go/1.4.2 (4676 files, 158M) *

    export PATH=$PATH:/usr/local/opt/go/libexec/bin

    Setting up GO's environment

    That shows where GO was installed. We need to do the following to setup GO's environment:

    $ export PATH=$PATH:/usr/local/opt/go/libexec/bin
    $ export GOPATH=/usr/local/opt/go/bin
    

    You can then check using GO to see if it's configured properly:

    $ go env
    GOARCH="amd64"
    GOBIN=""
    GOCHAR="6"
    GOEXE=""
    GOHOSTARCH="amd64"
    GOHOSTOS="darwin"
    GOOS="darwin"
    GOPATH="/usr/local/opt/go/bin"
    GORACE=""
    GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
    GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
    CC="clang"
    GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
    CXX="clang++"
    CGO_ENABLED="1"
    

    Setting up json2csv

    Looks good, so lets install json2csv:

    $ go get github.com/jehiah/json2csv
    $
    

    What just happened? It installed it. You can check like this:

    $ $ ls -l $GOPATH/bin
    total 5248
    -rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv
    

    OK, so why can't I type json2csv in my shell? That's because the /bin directory under $GOPATH isn't on your $PATH.

    $ type -f json2csv
    -bash: type: json2csv: not found
    

    So let's temporarily add it:

    $ export PATH=$GOPATH/bin:$PATH
    

    And re-check:

    $ type -f json2csv
    json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
    

    Now it's there:

    $ json2csv --help
    Usage of json2csv:
      -d=",": delimiter used for output values
      -i="": /path/to/input.json (optional; default is stdin)
      -k=[]: fields to output
      -o="": /path/to/output.json (optional; default is stdout)
      -p=false: prints header to output
      -v=false: verbose output (to stderr)
      -version=false: print version string
    

    Add the modifications we've made to $PATH and $GOPATH to your $HOME/.bash_profile to make them persist between reboots.

    0 讨论(0)
提交回复
热议问题