Goのインストールに問題があります。私はManjaroを使用していますが、ManjaroがUbuntuやWindowsの提案とは異なる方法でgo envを処理しているようですので、これに関連していると思います。
私はインストールし、期待どおりにコードを実行できます。
$ go run gitlab.com/gitlabtest
Hello, GitLab!
次に、環境変数が設定されていることを確認します。
$ echo $GOROOT
$ echo $GOPATH
$ echo $GOBIN
$
だからそういうわけではありませんが、おかしいですね。テストプログラムを実行できるのはなぜですか?別の方法で環境変数を確認してみました。
$ go env GOROOT
/usr/lib/go
$ go env GOPATH
/home/bluebrown/go
$ go env GOBIN
$
本当に面白いです。 Go自体は環境変数をある程度理解しているようです。そのため、どこからでも効率的にgoコードを実行できます。まだ解決されていない$GOPATH
問題が1つあります。$GOBIN
まあ、これは私の〜/ .bash_profileを編集する必要があることを意味します。
#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export GOBIN=$HOME/go/bin
いよいよ所望の結果を得た。
$ source .bash_profile
$ echo $GOROOT &&echo $GOPATH &&echo $GOBIN
/usr/lib/go
/home/bluebrown/go
/home/bluebrown/go/bin
$
$ go env GOROOT &&go env GOPATH &&go env GOBIN
/usr/lib/go
/home/bluebrown/go
/home/bluebrown/go/bin
$GOBIN
いいですね。これで同様のパッケージを使用できます。滑るまたは支店正しいですか?
[~]$ go get -u -v github.com/kardianos/govendor
github.com/kardianos/govendor (download)
[~]$ cd $GOPATH/src
[src]$ mkdir testdir
[src]$ cd testdir
[testdir]$ govendor init
bash: govendor: command not found
まあ、そうではないかもしれません。だからグライドを試してみてください。
$ curl https://glide.sh/get | sh
$...
$which: no glide in
$ (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:
/usr/lib/jvm/default/bin:/usr/bin/site_perl:
/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/local/go/bin)
glide not found. Did you add $GOBIN to your $PATH?
Fail to install glide
知っていると、中にあったバッグは見つかり$GOBIN
ませんでした。デバイスを再起動すると、何らかの理由ですべてがリセットされます。
この時点で私は何をすべきかわかりません。
答え1
go get
使用またはインストールされたGolangバイナリを実行できる場合、これが正しく機能するためには、go install
Golang "bin"ディレクトリをファイルに追加する必要があります。$PATH
ないので参考にしてください本物$GOBIN
これが機能するには変数を設定する必要があります。存在しない場合は、初期化ファイルのいずれかで次のようなものを使用してください~/.bash_profile
。
PATH=$PATH:$HOME/go/bin
(もちろん、そうした場合は、$GOBIN
代わりにそれを使用してくださいPATH=$PATH:$GOBIN
。)
Golang 環境変数を設定しないことに関して、最近ではほとんど必要ありません。
この$GOROOT
変数はGolangインストールの解凍位置を指します。 「公式」ディストリビューションを使用している場合はデフォルト値なので、そのディレクトリ/usr/local/go
にディストリビューションを解凍して設定する必要はありません。 Linuxディストリビューションでは、このデフォルト値をパッケージ化されたGolangファイルの場所にカスタマイズすることが多く、Manjaroの場合はより合理的です/usr/lib/go
。とにかく、ディストリビューションにパッケージされたGolangを使用するか、公式バージョンをデフォルトの場所に解凍すると、この変数になります。セットは必要ありません。
については$GOPATH
以前は必須でしたが、Golang 1.8からデフォルトは~/go
:
GOPATH
システムの任意のディレクトリにすることができます。 Unixの例では$HOME/go
(Go 1.8以降のデフォルト)に設定されています。
したがって、Golangパッケージ(使用するパッケージなどgo get
)をデフォルトの場所に保存することに同意すると、そのパッケージを設定する必要はありません。
最後に、$GOBIN
デフォルト値はbin
。$GOPATH
したがって、通常はカスタマイズする必要はありません。
ご存知のように、go env
これらの変数を設定しないと、Golangのこれらの変数の概念が何であるかを確認できます。この場合、Golangは上記のデフォルト値を使用する必要があります。
もちろん、シェルでこれらの変数を参照するには、その変数を設定する必要があります! Golangにこれらの概念のデフォルト値があるという事実は、Golangが設定されていない変数を使用できることを意味します。 Golangがこれらの変数を魔法のように環境に注入するという意味ではありません。もう一度言いますが、Golangバイナリをに含めるには$PATH
これを設定する必要があります。回答の上部にある指示をご覧ください。