私はgo get
をやろうとしています:
go get github.com/go-sql-driver/mysql
そしてそれは次のエラーで失敗します。
package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath
go env
を実行すると、Goの値のリストは以下のようになります。
ubuntu@ip-xxx-x-xx-x:~$ go env
GOARCH="AMD64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_AMD64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
明らかにGOPATHは設定されていません、どのようにそしてどこでそれを設定しますか?
このエラーに言及しているスレッドはたくさんありますが、私の質問に対する答えを提供しているスレッドはありません。このパスの値を指定するにはどのファイルを編集する必要がありますか?
2018+答え:
2018年以前の回答:
以下の行を〜/ .bashrcに追加するだけで、これは持続します。ただし、私のサンプルでは$ HOME/goの代わりにGOPATHとして他のパスを使用できます。
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Ubuntu 14.04
export GOPATH=$HOME/go
さらに、この文字列をファイルに追加することができます
$HOME/.bashrc
GOPATHは新しく作成された空のディレクトリに設定する必要があります。これは、パッケージをダウンロードする「ワークスペース」などです。私は〜/ .goを使います。
例えば:
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc
ソース: http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/ /
たとえば、パッケージをインストールした後のUbuntuの場合:
$Sudo apt install golang -y
以下の行を〜/ .bashrcに追加してください。
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPATH=/path/desired/here
ファイルを編集する必要はありません。Go環境変数を直接編集するために上記のコマンドを使用することができます。
最短 および current 解。
このコードをターミナルに書いてください。
export GOPATH=path/to/your/gopath/directory
注 :これは、新しいターミナルウィンドウまたはシステムの再起動ごとにリセットされます。
永続的にするには、シェルに応じて以下のコードを.zshrc
または.bashrc
ファイルに貼り付けます。 ホームディレクトリ にあるファイル。以下のようになります。
export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin
環境変数の変更が必要なものを設定した場合Java、Goなどこれは非常におなじみでしょう。
Goのパスとして、次のようなディレクトリ構造があるとします。
\---[folder name]
+---bin
+---pkg
\---src
Sudo nano /etc/environment
PATH=...
を見つけてそれの終わりに行き、最後のパスの後にコロン:
を追加し、そしてあなたの完全なgo path
を貼り付けてください。 /home/user/gocode
これで、システム全体で永続的になります。
後でGOPATHも必要になります。それで~/.bashrc
に追加してください。
移動モジュール[新しい方法]
Go 1.11以降:Go Modulesをサポート(以前はvgo)していたので、もうGOPATHを使う必要はない。ただし、これはまだ実験的な機能です。
たとえば、システム内の任意のディレクトリ($ GOPATHの外側)に移動し、そこで新しいGoモジュールを初期化してそこで作業することができます。 GOPATHは必要ありません。
あなたは一度だけこれを実行する必要があります(ディレクトリにいる間):
go mod init
これ以降、そのディレクトリはモジュールのルートと見なされます。あなたは好きなだけモジュールを作成することができます。 GOPATHはまもなくhistory になります。
GOPATHを使うことを主張するなら、これに注意してください。
Go 1.8以降:GOPATHやGOROOTを設定する必要はありません。 GOPATHはデフォルトであなたのユーザー/ホームディレクトリの下にあります。
GOPATHが設定されていない場合は、UNIXシステムでは$ HOME/go、Windowsでは%USERPROFILE%\ goと見なされます。ワークスペースとしてカスタムの場所を使用したい場合は、GOPATH環境変数を設定できます。
より詳しい情報は this をチェックしてください。
私の外出環境はあなたのものに似ていました。
$go env
GOARCH="AMD64"
GOBIN=""
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go-1.6"
GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_AMD64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
GOPATHを /usr/lib/go に設定することで解決しました。やってみよう。
export GOPATH=/usr/lib/go
export PATH=$PATH:$GOPATH/bin
go pathは、ディレクトリを作成してGOPATHという名前のグローバルパス変数を自分の環境に設定するだけの場所にできます。
mkdir ~/go
export GOPATH=~/go
go get github.com/go-sql-driver/mysql
Ubuntu 15.10 をfish Shell
を使って動作させたのはこのためです。
# ~/.config/fish/config.fish
set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go
それから私はgo
フォルダのアクセス権を変更しなければなりませんでした(それはrootに設定されていました)
Sudo chown <name>:<name> -R /usr/share/go
_ gopath _ は、作業スペースの場所への環境変数です。 _ goroot _ は、インストールディレクトリへの環境変数です。 _ goroot _ および _ gopath _ はインストール時に自動的に設定されますが(バグがない場合)、手動で指定するには以下の手順に従います。さらに詳しい情報は GOのwikiページ を参照してください。
_ gopath _ をホームディレクトリ内のディレクトリ、たとえば$ HOME/go、%USERPROFILE%\ go(Windows)に設定することをお勧めします。
あなたのターミナルタイプ
vim ~/.profile
ターミナルで開いた文書で i を押して、次のパスを追加します。
GOPATH=/path/to/a/directory/inside/home/directory
GOROOT=/path/to/you/go/library
PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin
_ esc _ を押して、 :x と入力します。最後に、端末を再起動( close および open )するか、 Logout および Login をもう一度実行してください。
CAUTION _ goroot _ と _ gopath _ の両方を同じディレクトリに設定しないでください。警告が表示されます。
Go 1.8(2017年第2四半期)では、デフォルトのGOPATH
値をそのまま使用すれば、ファイルを編集する必要はありません。
$HOME/go
issue 17262 および に関連するTwitterの投票 :に対するコメントを見ることができます。
デフォルトの
GOPATH
を選択することで、次のように言えるので、ドキュメントを簡単にすることができます。
$ go get github.com/foo/bar
github.com/foo/bar
レポジトリを$HOME/go/src/github.com/foo/bar
にチェックアウトします。環境変数を設定しなければならないことで新参者の注意をそらす必要はありません。必要なのはページの下部にかっこ付きのメモを追加することだけです
$HOME/go
はgoワークスペースへのデフォルトパスです。
このパスを変更したい場合は、GOPATH
変数を任意のものに設定してください。
~/.bash_profile
を編集して次の行を追加します。
$ export GOPATH=$HOME/work
保存してエディタを終了します。次に、あなたの~/.bash_profile
を読みます。
$ source ~/.bash_profile
注:go installの実行時にGOBINパスを設定してバイナリファイルを生成します。
$ export GOBIN=$HOME/work/bin
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
そして、あなたは$ go envでチェックしたいかもしれません。
GOPATH環境変数は、ワークスペースの場所を指定します。デフォルトではホームディレクトリの中にgoという名前のディレクトリがあるので、Unixでは$ HOME/go、Plan 9では$ home/go、Windowsでは%USERPROFILE%\ go(通常はC:\ Users\YourName\go)です。別の場所で作業したい場合は、GOPATHをそのディレクトリへのパスに設定する必要があります。 (もう1つの一般的な設定は、GOPATH = $ HOMEを設定することです。)GOPATHは、Goのインストール先と同じパスにしないでください。
たとえば、( Goプラグイン を使用して)Jetbrains Webstormでコーディングしている場合は、GOPATH
を/Users/<user>/WebstormProjects
に設定することをお勧めします。
簡単に言うと、Goプロジェクトを置きたい場所に設定します。
私のFedora 20マシンでは、〜/ .bashrcに次の行を追加しました。
export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
他の人が提案したのと同じように、「エクスポート」ソリューションを使用できます。恒久的な利便性のために別の解決策を提供したいのですが、Goコマンドを実行するときはGOPATHとして任意のパスを使用できます。
まず、gost
という小さなツールをダウンロードする必要があります。 https://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として使用したいパスを pathspace gost
が管理するパスに追加します。パスには後で使用する名前を付ける必要があります。
$ 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を設定してコマンドを実行するのに役立ちます。しかし、gost
の pathspace にパスを追加したことを忘れないでください。あなたが/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
これは対処するのが最も厄介なことです。あなたの時間を節約することを願って。
Rootユーザとしてインストールされた場合システムのbash_profileテキストファイル〜/ .bash_profileのrootユーザーは、$ GOROOTをgo installディレクトリに割り当て、$ GOPATHをgo/srcディレクトリに割り当てる必要があります。
...$# Sudo su
...$# vi ~/.bash_profile
***Story continues in vi editor***
GOROOT=$GOROOT:/usr/local/go
GOPATH=$GOPATH:/usr/local/go/src
...
[your regular PATH stuff here]
...
バイナリへのパスが.bash_profileのパスにあることを確認してください
PATH = $ PATH:$ HOME/bin:/ usr/local/bin:/ usr/local/go/bin
このPATHは、コロンで区切って新しい項目を追加するのに必要な長さの文字列です。
viエディタを終了してbashプロファイルを保存する(:wqはwriteとquitを表します)
[esc]
[shift] + [:]
:wq
あなたはターミナルからログアウトし、再び開始するためにプロファイルのためにログインし直さなければなりません。あるいは、あなたはちょうどexportを使ってそれをキックスタートすることができます。
...$# export GOPATH=/usr/local/go/src
あなたは行くenvを確認することができます:
...$# go env
わーい!
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/go/src"
GORACE=""
GOROOT="/usr/local/go"
これで、Sudoしてgoでディレクトリをダウンロードしてgo/src内に作成できるようになります。そして、実行しようとしていたものに戻ることができます。
例
# Sudo go get github.com/..
今度は別の問題に遭遇します.. gitがインストールされていないかもしれません..それは別の冒険です.. :)
さらに別の解決策:GO*
からすべてのgo env
環境変数をエクスポートする
.bashrc:
eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do
echo "export $setenv; "
done 2> /dev/null)
[[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin"
[[ -n $GOROOT ]] || export GOROOT=/usr/bin/go
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"