web-dev-qa-db-ja.com

ダウンロードできない、$ GOPATHが設定されていない

go get github.com/jehiah/json2csvを使用してjson2csvをインストールしたいのですが、このエラーが表示されます。

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path

MacOSでこれを修正する方法について何か助けがありますか?

138
Mona Jalal

[更新:Go 1.8以降、GOPATH$HOME/goにデフォルト設定されていますが、GOPATHレイアウトを理解したり、カスタマイズしたりする場合に便利です。

公式のGoサイト GOPATHとワークスペースディレクトリのレイアウト方法について

export GOPATH="$HOME/your-workspace-dir/"-シェルで実行し、~/.bashrcまたは同等のものに追加して、将来設定されるようにします。 Goは、src/bin/、およびpkg/のサブディレクトリにパッケージをインストールします。 GitHubに公開する場合は、$GOPATH/srcのような$GOPATH/src/github.com/myusername/の下に独自のパッケージを配置する必要があります。 export PATH=$PATH:$GOPATH/binの下でコンパイルされたプログラムを実行できるように、おそらく.bashrc$GOPATHも必要になるでしょう。

オプションで、 Rob Pike経由CDPATHを設定してbashでディレクトリをパッケージ化するためにcdを高速化することもできます:export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/xcd net/htmlの代わりにcd $GOPATH/src/golang.org/x/net/html

Keith Rarick GOPATH=$HOMEを設定して、Goのsrc/pkg/、およびbin/ディレクトリをhomedirの直下に配置できます。それはいいかもしれません(たとえば、既にパスに$HOME/binが含まれているかもしれません)が、もちろん一部の人々は複数のワークスペースなどを使用しています。

135
twotwotwo

これはうまくいった

buntuでGo開発環境をセットアップし、$ GOPATH/$ GOROOTを修正する方法

ステップ

mkdir ~/go

$ GOPATHを.bashrcに設定します。

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
82
suryakrupa

醸造を使用する

brewを使ってインストールしました。

$ brew install go

このbrewコマンドを実行すると、完了したときに次の情報が表示されます。

$ 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

そこに重要な部分はこれらの行です:

/usr/local/Cellar/go/1.4.2(4676ファイル、158M)*

エクスポートパス= $パス:/ usr/local/opt/go/libexec/bin

GOの環境設定

それはGOがインストールされた場所を示しています。 GOの環境を設定するには、以下を実行する必要があります。

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

それからGOを使ってそれが正しく設定されているかどうかを確認することができます。

$ 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"

Json2csvを設定する

見栄えが良いので、json2csvをインストールしましょう:

$ go get github.com/jehiah/json2csv
$

今何があったの?インストールしました。あなたはこのようにチェックすることができます:

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

それでは、なぜシェルにjson2csvを入力できないのですか? /binの下の$GOPATHディレクトリがあなたの$PATH上にないからです。

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

それでは一時的に追加しましょう:

$ export PATH=$GOPATH/bin:$PATH

そして再確認してください。

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

今それがあります:

$ 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

$PATH$GOPATHに加えた変更を$HOME/.bash_profileに追加して、再起動してもそれらが持続するようにします。

33
slm

ビデオを見る

一般的に、私はいつもGoからのこの公式ビデオをお勧めします。

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

言われるよりも見せる方が簡単です

@ jwfearn ビデオの重要な部分を言い換えました。

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

17
0x434D53

私はこのようにする方が簡単だとわかりました:

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
4
João Fernandes

MACのためにこれは私のためにうまくいった。

Sudo nano /etc/bashrc

そして、ファイルの最後に以下を追加してください。

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

これで問題は解決するはずです。新しい端末を開いて$ GOPATHをエコーし​​てみてください。正しい値が表示されるはずです。

3
Shasti

(MACの場合)

私はこれらすべての答えを試してみましたが、まだ知られていない理由で、どれもうまくいきませんでした。

GOPATHを必要とするコマンドごとに環境変数を設定してGOPATHを「強制的にフィード」しなければなりませんでした。例えば:

Sudo env GOPATH=$HOME/goWorkDirectory go build ...

glideでもGOPATH not setエラーを出していました。やはり「力の餌付け」によってそれを解決した。私はこれらすべての答えを試したが、それでも未知の理由でそれらのどれもうまくいかなかった。

GOPATHを必要とするコマンドごとに環境変数を設定してGOPATHを「強制的にフィード」しなければなりませんでした。

Sudo env GOPATH=$HOME/goWorkDirectory glide install

これが誰かに役立つことを願っています。

2
zephel

あなたの$GOROOTは設定すべきではありません。 $GOPATHと入力して、$HOME/goexport $GOPATH=$HOME/goに設定する必要があります。

問題を解決するにはexport GOROOT=""を入力してください。

2

export GOPATH="/whatever/you/like/your/GOPATH/to/be"を実行するだけです。

1
Volker

'go env'を実行して、GOPATHが現在向いている場所を確認してください。そのディレクトリに移動すると、 'go get..etc'コマンドが機能するはずです。

0
Alexander Leon

他の人が提案したのと同じように、「エクスポート」ソリューションを使用できます。恒久的な利便性のために別の解決策を提供したいのですが、Goコマンドを実行するときはGOPATHとして任意のパスを使用できます。

まず、gosthttps://github.com/byte16/gost/releases という名前の小さなツールをダウンロードする必要があります。 ubuntuを使用している場合は、Linuxバージョンをダウンロードできます( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_AMD64.tar.gz ) 。

それからあなたはそれを解凍するために以下のコマンドを実行する必要があります:

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

あなたは実行ファイルgostを得るでしょう。便利に使用するために/usr/local/binに移動することができます。

$ Sudo mv gost /usr/local/bin

以下のコマンドを実行して、GOPATHとして使用したいパスをpathspacegostで管理しているパスに追加します。パスには後で使用する名前を付ける必要があります。

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

必要なGoコマンドを次の形式で実行します。

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

たとえば、GOPATHとしてgo get github.com/go-sql-driver/mysqlを付けて/home/foobar/barを実行したい場合は、次のようにします。

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

GOPATHを設定してコマンドを実行するのに役立ちます。しかし、gostpathspaceにパスを追加したことを忘れないでください。あなたが/home/foobar/barの任意のレベルのサブディレクトリの下にいるならば、あなたは以下のコマンドを実行することさえできます。

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

gostは、GOPATHを管理し、Goコマンドを実行するのに役立つ、単純なGoのツールです。他のGoコマンドを実行するための使い方の詳細については、gost help goCmdNameを実行するだけです。たとえば、installについてもっと知りたい場合は、以下に単語を入力してください。

$ gost help install

プロジェクトのREADMEにも詳細があります。 https://github.com/byte16/gost/blob/master/README.md

0
Franco

この問題はラズベリーパイで私に起こりました。 VNCクライアントを介してログインしていましたGOPATHを設定してエクスポートしても問題が解決しません。それからSudoなしで "go get"コマンドを実行すればそれは完全にうまくいった。

0
mtamboli

$GOPATHを設定した後にこの問題に遭遇した場合、それはサポートされていないシェルでそれを実行しているためかもしれません。私はfishを使用していましたが、bashで起動してもうまくいきませんでした。

0
Julien Fouilhé