UbuntuでGOPATH環境変数を設定するにはどうすればよいですか?どのファイルを編集する必要がありますか?


258

私はしようとしています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が設定されていないことは明らかですが、どこでどのように設定すればよいですか

このエラーについて言及しているスレッドはたくさんありますが、私の質問に対する答えを提供しているスレッドはありません。このパスの値を提供するためにどのファイルを編集する必要がありますか?


どのシェルを使用していますか?
fuz

3
それを設定するかについての回答に加えて、参照このSOの答え GOPATHが何であるかを明確化し、そしてどのようにそれが一般的に使用されるべきである
ルイ・マドックス



1
注:Go 1.8+(2017年第2四半期)が設定さGOPATHれます。以下の私の回答を参照しください。
VonC 2016年

回答:


284

新しい方法:

この回答をご覧ください。

古い方法:

以下の行を〜/ .bashrcに追加するだけで、これが持続します。ただし、私のサンプルでは、$ HOME / goの代わりに、GOPATHとして好きな他のパスを使用できます。

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

14
パスは/usr/share/go私のUbuntu 13.10でした。
tsusanka 14

35
/ usr / share / goは使用しないでください。GOPATHはgoの「ワークスペース」で、パッケージなどをダウンロードします。新しいディレクトリを作成し、それを使用します。〜/ .goをお勧めします
Bryan Larsen

16
user2128535の回答で述べたように、GOROOTは/ usr / lib / goに設定する必要があります
非常に複雑な2015


12
$ source ~/.bashrc;)を忘れないでください
エバーズ2015

65

Ubuntu 14.04

export GOPATH=$HOME/go

さらに、この文字列をファイルに追加できます

$HOME/.bashrc

1
元の回答の削除された行を参照しているため、コメントは混乱を招きます。
Marcel Burkhard

mkdir -p〜/ go / bin export GOPATH =〜/ go export PATH = $ PATH:$ GOPATH / bin:
Alex Punnen

61

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/


1
ありがとうございました
ディランB

35

新しい方法:Goモジュール

Go 1.11以降、GOPATHを使用する必要がなくなりました。プロジェクトディレクトリに移動して、これを1回実行します。

go mod init github.com/youruser/yourrepo
  • これにより、Goはそのディレクトリにモジュールルートを作成します。
  • モジュールはいくつでも作成できます。
  • 詳しい手順については、この回答もご覧ください。

古い方法:GOPATH

あなたがGOPATHでの作業を主張するなら、これに注意してください:

  • Go 1.8以降では、GOPATHやGOROOTを設定する必要はありません。
  • デフォルトでは、GOPATHはユーザー/ホームディレクトリの下にあります。

ドキュメントから

GOPATHが設定されていない場合、UNIXシステムでは$ HOME / go、Windowsでは%USERPROFILE%\ goと見なされます。ワークスペースとしてカスタムの場所を使用する場合は、GOPATH環境変数を設定できます。


34

たとえば、パッケージをインストールした後、それがUbuntuの場合:

$sudo apt install golang -y

〜/ .bashrc(ユーザーの)に次の行を追加するだけです

export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

19
export GOPATH=/path/desired/here

ファイルを編集する必要はありません。上記のコマンドを使用して、Go環境変数を直接編集できます。


11
ただし、これは永続的ではありません。このオプションを維持したい場合-おそらくそうします-ログイン時にロードされるいくつかのファイルにそれを追加する必要があります。
キュービック2014年

1
ありがとう!ほとんどのユーザーがこれまで考えたことはありません。Linuxを使い始めている人がいて、あなたが言ったことを説明するドキュメントがない場合(誰もがそれを既知の事実であると考えているため)、どのように情報を学習/検索しますか?
PlayHardGoPro

19

このコードをターミナルで記述します。

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

11

GOPATHも後で必要になります。に追加してください~/.bashrc


10
はい、私はこれを念頭に置いていましたが、カスタムシェルを備えたUbuntuボックスがあり、その可能性が非常に低いとは考えられない可能性を
否定しました

9

Java、Goなどの環境変数の変更が必要なものをセットアップした場合、これは非常によく知られています。

Goパスとして、次のディレクトリ構造があると仮定します。

\---[folder name]
    +---bin
    +---pkg
    \---src
  • 新しいターミナルを開く
  • タイプ sudo nano /etc/environment
  • 見つけるPATH=...と、それの終わりに行くとコロンを追加し:、あなたの完全な形で貼り付ける最後のパスの後にgo path例えば/home/user/gocode

これでシステム全体で永続的になります。


1
goがDavidで動作しているのに、なぜ$ PATHを変更するのかわかりません。彼は$ GOPATHを設定する必要があります(Daniel Linからの回答を参照)。Davidは両方のアプローチをマージする(または/ etc / profileまたは$ HOME / .profileに設定する)ことができます。ちなみに、Davidにこれらのリンクを読むことをお勧めします:golang.org/doc/installおよびgolang.org/doc/code.html#GOPATH
zk82

2
@ zk82 $ GOPATHは環境変数です。この変数を追加するために環境変数を編集して問題になる理由はわかりません。$ JAVA_HOMEおよびそのような構成を必要とするその他のフレームワークについても同様です。
ymg 2014年

なるほど、分かりました。コメントありがとうございます。
zk82 2014年

3

これは私が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フォルダの権限を変更する必要がありました(ルートに設定されていました)

sudo chown <name>:<name> -R /usr/share/go

3

go pathは、ディレクトリを作成し、GOPATHの名前でグローバルパス変数を環境に設定するすべての場所にすることができます。

mkdir ~/go
export GOPATH=~/go
go get github.com/go-sql-driver/mysql

2

Go 1.8(2017年第2四半期)では、デフォルトGOPATH値(設定済み)を受け入れる場合、ファイルを編集する必要はありません。

$HOME/go

問題17262のコメントと関連するTwitter投票を確認できます。

デフォルトを選択することによりGOPATH、次のように言うことができるため、ドキュメントを簡単にすることができます

$ go get github.com/foo/bar

github.com/foo/barリポジトリをチェックアウトし$HOME/go/src/github.com/foo/barます。

env varを設定する必要があるため、新規参入者の注意をそらす必要はありません。必要なのは、ページの下部にかっこで囲まれた小さなメモを置くことだけです。

$HOME/gogoワークスペースへのデフォルトパスです。
このパスを変更する場合は、GOPATH変数を任意の値に設定してください。


2

私の囲碁環境はあなたのものに似ていました。

$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

インストールディレクトリと同じようにGOPATHを設定することは悪い考えだと、どこかで読みました。Oo
ankush981 2017年

2

GOPATHは、ワークスペースの場所に対する環境変数です。 GOROOTは、インストールディレクトリの環境変数です。がGOROOTGOPATHが(バグがないならば)、自動的にそれを手動で指定するには、インストール時に設定されているあなたは、プロセスの下に従うことができます。さらに、詳細については、GOのwikiページを参照してください。

GOPATHをホームディレクトリ内のディレクトリ、たとえば$ HOME / go、%USERPROFILE%\ go(Windows)に設定することをお勧めします。

  1. これはmacOS Sierraバージョンでテストされたソリューションmacです。10.12、およびGogland-EAPでも、JetBrainsによってGoプログラミングのIDEとして導入されました。

あなたのターミナルタイプで

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と入力します。最後に、ターミナルを再起動(閉じ開く)するか、ログアウトして再度ログインする必要があります。

  1. WindowsおよびLinuxの構成については、GithabのGo wikiページでGOPATH-Golangの設定を参照してください。

注意GOROOTGOPATHの両方を同じディレクトリに設定しないでください。設定すると、警告が表示されます。


2
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

そして、あなたは$ go envでチェックしたいかもしれません


2

(ウブントゥ)

GOPATHを設定しない場合は、デフォルトが使用されます。

$ GOPATH / binにインストールされているバイナリを実行するには、PATHに$ GOPATH / binを追加するか、$ GOPATH / bin / the-commandと入力する必要があります。これを〜/ .bash_profileに追加してください

export PATH=$GOPATH/bin:$PATH

現在のGOPATHコマンド:

go env GOPATH

GOPATHコマンドの変更:

export GOPATH=$HOME/your-desired-path


0

これは対処が最も煩わしいことです。あなたの時間を節約することを期待して。

IF goはrootユーザーとしてインストールされました。システムのbash_profileテキストファイル〜/ .bash_profileのrootユーザーは、$ GOROOTをgoインストールディレクトリに割り当て、$ 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は書き込みと終了を表します)

  [esc] 
  [shift] + [:] 
  :wq

ターミナルからログアウトし、再度ログインしてプロファイルを開始するには、ログインする必要があります。または、エクスポートを使用してキックスタートすることもできます。

...$# export GOPATH=/usr/local/go/src

あなたは行く環境を確認することができます:

...$# go env

わーい!

GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/go/src"
GORACE=""
GOROOT="/usr/local/go"

これで、sudoを実行してgoがsrc内にディレクトリをダウンロードおよび作成できるようになり、実行しようとしていたことを理解できるようになります。

# sudo go get github.com/..

これで、別の問題が発生します。Gitがインストールされていない可能性があります。


これを行わないでください。あなたはないではないルートとして物事をコンパイルしたいとあなたはないではないしたいgo get任意の場所に近いものを置くことGOROOT
Dave C

通常のユーザーの下ではどのように実行しますか?本当にありがとう。インストールプロセス中に問題が解決しなかったため、テスト仮想マシンを使用してGOを試しました。
user3151532 2015年

0

Fedora 20マシンで、次の行を〜/ .bashrcに追加しました。

export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

3
設定しないでくださいGOROOT。(Goのバイナリディストリビューションを使用しているが、標準以外の場所にインストールしている非常に小さなサブセットでない限り)
Dave C

0

さらに別のソリューション:すべての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"

1
eval通常は悪いアイデアと、このような状況の私見ではやり過ぎである
パヴェルPrażak

@PawełPrażakなんで?(私はシェルスクリプトの専門家ではありません)
DMaster

1
評価対象にバグがある場合、その結果は痛みを伴う可能性があります。ここで問題は、エクスポートする方法だったGOPATHだけ
パヴェルPrażak

0

を編集して~/.bash_profile次の行を追加します。

$ export GOPATH=$HOME/work

エディターを保存して終了します。次に、~/.bash_profile

$ source ~/.bash_profile

注:go installの実行時にバイナリファイルを生成するようにGOBINパスを設定します

$ export GOBIN=$HOME/work/bin


-1

公式の指示に書かれているように

GOPATH環境変数は、ワークスペースの場所を指定します。デフォルトでは、ホームディレクトリ内のgoという名前のディレクトリになっています。Unixでは$ HOME / go、Plan 9では$ home / go、Windowsでは%USERPROFILE%\ go(通常はC:\ Users \ YourName \ go)です。別の場所で作業する場合は、GOPATHをそのディレクトリへのパスに設定する必要があります。(別の一般的な設定は、GOPATH = $ HOMEを設定することです。)GOPATHは、Goインストールと同じパスであってはならないことに注意してください。

たとえば、Jetbrains Webstormで(Goプラグインを使用して)コーディングしている場合は、GOPATHとして設定できます/Users/<user>/WebstormProjects

簡単に言うと、Goプロジェクトを配置する場所に設定します。


-1

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

まず、httpsgost : //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 として使用するパスを、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のパススペースに追加したことを思い出してください。のいずれかのレベルのサブディレクトリの下にいる場合は/home/foobar/bar、以下のコマンドを実行するだけでも同じことができます。

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

gostGOPATHの管理とGoコマンドの実行を支援するGoのシンプルなツールです。これを使用して他のGoコマンドを実行する方法の詳細については、を実行してくださいgost help goCmdName。たとえば、についてもっと知りたい場合はinstall、次のように単語を入力してください:

$ gost help install

詳細については、プロジェクトのREADMEもご覧ください。https//github.com/byte16/gost/blob/master/README.md


-1

使用する端末(bashまたはzsh)に基づいてPATHを更新する必要があります。

  1. 端末のシェルスクリプトファイルを開く~/.bashrc~/.zshrc、エディターで開きます
   vi ~/.zshrc
      (or)
   code ~/.zshrc
  1. 既に見つかった場合は、以下のGOPATHを更新するか、以下の行を追加します。

export GOPATH=$HOME/go:/$HOME/projects/go

ここ:では、システム上のGOプロジェクトのさまざまな場所からセミコロンで区切られた1つ以上のパスをGOPATH環境変数に追加できます/path/1:path/2:path/3

私の場合、上記のように2つのパスを追加しました。1つはルート$HOME/goから、もう1つはプロジェクトディレクトリからです。:/$HOME/projects/go

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.