1. ホーム
  2. macos

[解決済み] Go のインストールがエラーで失敗する: GOPATH 外のディレクトリ xxx のインストール先がない

2022-02-13 15:13:24

質問

~/src/go-statsd-client> echo $GOPATH
/Users/me/gopath
~/src/go-statsd-client> echo $GOROOT
/usr/local/Cellar/go/1.1.1\
~/src/go-statsd-client> go install
go install: no install location for directory /Users/me/src/go-statsd-client outside GOPATH

プロジェクトがどのような構造であっても、これは常に同じメッセージで失敗します。Goビルドは完全に動作します。

以下は私の go env

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/me/gopath"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.1.1"
GOTOOLDIR="/usr/local/Cellar/go/1.1.1/pkg/tool/darwin_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
CGO_ENABLED="1"

これはMac OSX Mountain Lionで、goはhomebrewでインストールしました。

解決方法は?

に引数を与えない場合 go install の場合、デフォルトでカレントディレクトリにパッケージをインストールしようとします。エラーメッセージは、カレントディレクトリがあなたの $GOPATH .

のどちらかです。

  • 定義 $GOPATH を$HOMEに追加してください ( export GOPATH=$HOME ).
  • ソースを現在の $GOPATH ( mv ~/src/go-statsd-client /User/me/gopath ).

どちらかの後、に入る。 go-statsd-client ディレクトリに移動し go install と入力しても動作しますし go install go-statsd-client をファイルシステムのどこからでも実行できます。ビルドされたバイナリは $GOPATH/bin .

関係ない提案ですが、名前の衝突を避けるために、おそらくパッケージの名前空間をドメイン名で指定したいでしょう (例. github.com/you/go-statsd-client ソースコードがそこにあるのであれば)。