web-dev-qa-db-ja.com

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

私は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の値のリストは以下のようになります。

[email protected]:~$ 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は設定されていません、どのようにそしてどこでそれを設定しますか?

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

228
David Saintloth

2018+答え:

この答えをチェックしてください。

2018年以前の回答:

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

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
257
Daniel Lin

Ubuntu 14.04

export GOPATH=$HOME/go

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

$HOME/.bashrc
62
pasha.zhukov

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/ /

58
Bryan Larsen

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

$Sudo apt install golang -y

以下の行を〜/ .bashrcに追加してください。

export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
23
firebitsbr
export GOPATH=/path/desired/here

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

14
David Saintloth

最短 および 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
10
atilkan

環境変数の変更が必要なものを設定した場合Java、Goなどこれは非常におなじみでしょう。

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

\---[folder name]
    +---bin
    +---pkg
    \---src
  • 新しい端末を開く
  • タイプSudo nano /etc/environment
  • PATH=...を見つけてそれの終わりに行き、最後のパスの後にコロン:を追加し、そしてあなたの完全なgo pathを貼り付けてください。 /home/user/gocode

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

9
ymg

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

8

移動モジュール[新しい方法]

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 をチェックしてください。

7
Inanc Gumus

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

$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
4
NSP

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

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

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
4
Tom

_ gopath _ は、作業スペースの場所への環境変数です。 _ goroot _ は、インストールディレクトリへの環境変数です。 _ goroot _ および _ gopath _ はインストール時に自動的に設定されますが(バグがない場合)、手動で指定するには以下の手順に従います。さらに詳しい情報は GOのwikiページ を参照してください。

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

  1. これはmacOS Sierra、verでテストされているソリューションmacです。また、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 と入力します。最後に、端末を再起動( close および open )するか、 Logout および Login をもう一度実行してください。

  1. WindowsとLinuxの設定については、 Setting GOPATH-Golang にあるGithabのGo Wikiページを参照してください。

CAUTION _ goroot _ _ gopath _ の両方を同じディレクトリに設定しないでください。警告が表示されます。

3
Esmaeil Mirzaee

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変数を任意のものに設定してください。

3
VonC

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

$ export GOPATH=$HOME/work

保存してエディタを終了します。次に、あなたの~/.bash_profileを読みます。

$ source ~/.bash_profile

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

$ export GOBIN=$HOME/work/bin
1
Jackal
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

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

1
mei

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

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プロジェクトを置きたい場所に設定します。

0
Abdul Wasae

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

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

他の人が提案したのと同じように、「エクスポート」ソリューションを使用できます。恒久的な利便性のために別の解決策を提供したいのですが、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

0
Franco

これは対処するのが最も厄介なことです。あなたの時間を節約することを願って。

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がインストールされていないかもしれません..それは別の冒険です.. :)

0
user3151532

さらに別の解決策: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"
0
DMaster