Ubuntu'da GOPATH ortam değişkenini nasıl ayarlarım? Hangi dosyayı düzenlemeliyim?


258

Ben yapmaya çalışıyorum go get:

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

ve aşağıdaki hatayla başarısız olur:

package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath

Bir yaptığımda go env, Go değerlerinin bir listesi aşağıdaki gibi gösterilir:

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"

açıkça GOPATH ayarlanmadı, nasıl ve nerede ayarlayabilirim?

Bu hatayı söyleyen birçok iş parçacığı görüyorum ama soruma bir cevap vermeyen hiçbir ileti görmüyorum, bu dosya için bir değer sağlamak için hangi dosyanın düzenlenmesi gerekiyor?


Hangi kabuğu kullanıyorsun?
fuz

3
Ne olarak ayarlanacağına dair cevaplara ek olarak, GOPATH'ın ne olduğunu ve genel olarak nasıl kullanılması gerektiğini açıklayan bu SO cevabına bakın
Louis Maddox



1
Not: Go 1.8+ (Q2 2017) GOPATHsizin için ayarlanacaktır : aşağıdaki cevabımı görün .
VonC

Yanıtlar:


284

Yeni yol:

Bu cevaba göz atın.

Eski yol:

Sadece aşağıdaki satırları ~ / .bashrc dosyasına ekleyin, bu devam edecektir. Ancak, örneğimde $ HOME / go yerine GOPATH olarak istediğiniz diğer yolları kullanabilirsiniz .

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

14
Yol /usr/share/gobenim Ubuntu 13.10 üzerindeydi.
tsusanka

35
/ Usr / share / go komutunu KULLANMAYIN. GOPATH, go'nun paketleri indirdiği "çalışma alanı" dır. Yeni bir dizin oluşturun ve kullanın. Ben tavsiye ~ / .go
Bryan Larsen

16
User2128535 yanıtında belirtildiği gibi, GOROOT / usr / lib / go
trungly


12
Unutmayın $ source ~/.bashrc;)
eversor

65

Ubuntu 14.04

export GOPATH=$HOME/go

Ayrıca bu dizeyi dosyaya ekleyebilirsiniz

$HOME/.bashrc

1
Yorumunuz kafa karıştırıcı çünkü orijinal cevabın kaldırılmış bir satırına atıfta bulunuyor.
Marcel Burkhard

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


36

Yeni Yol: Git Modüller

Go 1.11'den beri, artık GOPATH kullanmak zorunda değilsiniz. Proje dizininize gidin ve bunu bir kez yapın:

go mod init github.com/youruser/yourrepo
  • Bununla Go, bu dizinde bir modül kökü oluşturur.
  • İstediğiniz sayıda modül oluşturabilirsiniz.
  • Adım adım talimatlar için bu yanıta da göz atın .

Eski Yol: GOPATH

GOPATH ile çalışmak konusunda ısrar ediyorsanız, buna dikkat edin:

  • Go 1.8'den beri, GOPATH veya GOROOT'unuzu ayarlamanıza gerek yoktur.
  • GOPATH varsayılan olarak kullanıcı / ana dizininizin altındadır.

Belgelerden :

Hiçbir GOPATH ayarlanmamışsa, $ HOME / go Unix sistemlerinde ve% USERPROFILE% \ go Windows'da olduğu varsayılır. Çalışma alanınız olarak özel bir konum kullanmak istiyorsanız, GOPATH ortam değişkenini ayarlayabilirsiniz.


34

Örneğin, paketleri yükledikten sonra bir Ubuntu ise:

$sudo apt install golang -y

Sadece aşağıdaki satırları ~ / .bashrc dizinine ekleyin (Kullanıcınızın)

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

19
export GOPATH=/path/desired/here

Herhangi bir dosyayı düzenlemenize gerek yoktur, sadece Go ortam değişkenlerini doğrudan düzenlemek için yukarıdaki komutu kullanabiliriz.


11
Bu kalıcı değil. Bu seçeneğin kalmasını istiyorsanız - büyük olasılıkla, girişte yüklenen bir dosyaya eklemeniz gerekir.
Kübik

1
Teşekkürler! Çoğu kullanıcının hiç düşünmediği şey, linux ile başlayan insanlar olduğu ve söylediklerinizi söyleyen herhangi bir belge yoksa (çünkü herkes bunun bilinen bir gerçek olduğunu düşündüğü için) bilgileri nasıl öğrenir / buluruz?
PlayHardGoPro

19

Bu kodu Terminal'e yazın.

export GOPATH=path/to/your/gopath/directory

Not : Bu, her yeni Terminal penceresinde sıfırlanır veya sistem yeniden başlatılır.

Kalıcı olabilmek için aşağıdaki kodu kabuğunuza .zshrcveya .bashrcdosyanıza yapıştırın . Ana Dizininizdeki dosyalar . Aşağıdaki gibi olacak.

export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin

11

GOPATH'a daha sonra da ihtiyacınız olacak. Öyleyse ekleyin ~/.bashrc.


10
Evet, bunu aklımda tuttum, ancak bir adamın özel bir kabuklu bir Ubuntu kutusu olması ve çok olası olmadığını
bilmemesi

9

Java, Go vb. Ortam değişkenlerinin değiştirilmesi gereken herhangi bir şey ayarladıysanız, bu çok tanıdık olacaktır.

Git yolu olarak bir yerde aşağıdaki dizin yapısına sahip olduğunuzu varsayacağım:

\---[folder name]
    +---bin
    +---pkg
    \---src
  • yeni bir terminal aç
  • tip sudo nano /etc/environment
  • bulmak PATH=...ve onunla sonunu gidip bir iki nokta üst üste ekleme :ardından tam yapıştırmak son yolundan sonra go pathör/home/user/gocode

ve işiniz bittiğinde, bu sistem aracılığıyla kalıcı olmalıdır.


1
Go David için çalışıyorsa neden $ PATH'ı değiştirdiğimi anlamıyorum. $ GOPATH ayarlaması gerekiyor (Daniel Lin'in cevabına bakınız). David her iki yaklaşımı da birleştirebilir (veya / etc / profile veya $ HOME / .profile olarak ayarlayabilir). Bu arada, David'e şu bağlantıları okumasını öneriyorum: golang.org/doc/install ve golang.org/doc/code.html#GOPATH
zk82

2
@ zk82 $ GOPATH bir ortam değişkenidir ve neden bu değişkeni buna eklemek için ortam değişkenlerinizi düzenlemenin bir sorun olduğunu anlamıyorum. Aynı şey $ JAVA_HOME ve bu yapılandırmayı gerektiren diğer çerçeveler için de geçerlidir.
ymg

Tamam anladım. Yorumun için teşekkürler.
zk82

3

Bu benim için çalışma var ne Ubuntu 15.10 kullanılarak fish shell:

# ~/.config/fish/config.fish

set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go

Sonra goklasördeki izinleri değiştirmek zorunda kaldım (kök olarak ayarlandı)

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

3

go yolu sadece bir dizin oluşturmak ve ortamınıza GOPATH adına global yol değişkeni ayarlamak istediğiniz her yerde olabilir.

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

2

Go 1.8 (Q2 2017) ile, varsayılan GOPATHdeğeri (sizin için ayarlanmış) kabul ederseniz herhangi bir dosyayı düzenlemeniz gerekmez

$HOME/go

Sayı 17262 ve ilgili twitter oyu hakkındaki yorumları görebilirsiniz :

Bir varsayılan seçerek GOPATHdokümantasyonumuzu kolaylaştırabiliriz çünkü

$ go get github.com/foo/bar

github.com/foo/bariçine repo kontrol edecek $HOME/go/src/github.com/foo/bar.

Yeni başlayanların bir env var ayarlamasıyla dikkatimizi dağıtmamıza gerek yok, tek yapmamız gereken sayfanın altına küçük bir parantez notu koymak

$HOME/gogo çalışma alanınızın varsayılan yoludur.
Bu yolu değiştirmek istiyorsanız, GOPATHdeğişkeni seçtiğiniz bir şeye ayarlayın .


2

Benim gitme ortamım seninkine benziyor

$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 ayarını / usr / lib / go yaparak çözdüm . Denemek.

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

GOPATH'ın kurulum diziniyle aynı ayarının kötü bir fikir olduğunu bir yerde okudum. Oo
ankush981

2

GOPATH , çalışma alanı konumunuza uygun bir ortam değişkenidir. GOROOT , kurulum dizininiz için bir ortam değişkenidir. Her ne kadar GOROOT ve GOPATH kurulum süresince (bir hata olmaz ise) otomatik olarak ayarlanır, elle belirtmek için süreç aşağıda takip edebilirsiniz. Ayrıca, daha fazla bilgi için GO'nun wiki sayfasına bakabilirsiniz .

GOPATH'ı ana dizininizdeki bir dizine ayarlamak daha iyidir , örneğin, $ HOME / go,% USERPROFILE% \ go (Windows).

  1. Bu macOS Sierra, ver. 10.12 ve ayrıca JetBrains tarafından Go programlaması için IDE olarak tanıtılan Gogland-EAP'de.

Terminal türünüzde

vim ~/.profile

Terminal'deki açık belgede i tuşuna basın ve aşağıdaki yolu ekleyin

GOPATH=/path/to/a/directory/inside/home/directory
GOROOT=/path/to/you/go/library
PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin

ESC tuşuna basın ve şunu yazın : x . Son olarak, (yeniden başlatmanız gerekir yakın ve açık ) terminal veya çıkış yap ve Giriş tekrar.

  1. Windows ve Linux yapılandırması için lütfen GOPATH-Golang'ı Ayarlama konusundaki Githab'daki Wiki'ye git sayfasına bakın .

DİKKAT Do hem ayarlanmamış GOROOT ve GOPATH aksi bir uyarı alacak, aynı dizine.


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

Ve $ go env ile kontrol etmek isteyebilirsiniz


2

(Ubuntu)

Bir GOPATH ayarlamazsanız, varsayılan değer kullanılır.

$ GOPATH / bin'de kurulu herhangi bir ikili dosyayı yürütmek için PATH'nıza $ GOPATH / bin eklemeniz veya $ GOPATH / bin / the-command yazmanız gerekir. Bunu ~ / .bash_profile klasörünüze ekleyin

export PATH=$GOPATH/bin:$PATH

Geçerli GOPATH komutu:

go env GOPATH

GOPATH komutunu değiştirme:

export GOPATH=$HOME/your-desired-path


0

Bu, başa çıkmak için en sinir bozucu şeydi. Zamandan tasarruf etmeyi umarak.

IF go root kullanıcısı olarak kuruldu. Sisteminizin bash_profile metin dosyasının ~ / .bash_profile kök kullanıcısının go install dizinine $ GOROOT atanmış olması ve go / src dizinine $ GOPATH atanmış olması gerekir.

  ...$# 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]
    ...

ikili dosya yolunun .bash_profile yolunda olduğundan emin olun

YOL $ PATH =: $ HOME / bin: / usr / local / bin: / usr / local / go / bin

Bu PATH, iki nokta üst üste ile ayrı ayrı yeni öğeler eklemek için olması gereken bir dize olabilir:

vi editöründen çıkma ve bash profilini kaydetme (: wq yazma ve bırakma anlamına gelir)

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

Terminalden çıkış yapmanız ve profilin yeniden başlaması için tekrar giriş yapmanız gerekir.

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

Go env'yi doğrulayabilirsiniz:

...$# go env

Yaşasın!

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

Şimdi sudo ve go, go / src içindeki dizinleri indirip oluşturabilir ve yapmaya çalıştığınız şeye inebilirsiniz.

misal

# sudo go get github.com/..

Şimdi başka bir problemle karşılaşacaksın ... git yüklü olmayabilir .. bu başka bir macera .. :)


Bunu yapma. Sen do not kök olarak şeyleri derlemek istiyorsanız ve do not istiyorum go getyerde yakın bir şey koymak GOROOT.
Dave C

Bir koşu normal bir kullanıcı altında nasıl çalışır? Çok teşekkürler. Yükleme işlemi sırasında işler yolunda gitmedi ve GO'yu denemek için bir test sanal makinesi kullandım.
user3151532

0

Fedora 20 makinemde ~ / .bashrc'ye aşağıdaki satırları ekledim:

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

3
AyarlamaGOROOT . (Go'nun ikili dağıtımını kullanan ancak standart olmayan bir yere kurun, son derece küçük bir alt kümede değilseniz.)
Dave C

0

Yine başka bir çözüm: Her GO*ortam değişkeninigo 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
evalbu durumda genellikle kötü bir fikir ve aşırıya kaçma IMHO
Paweł Prażak

@ PawełPrażak Neden? (Kabuk betiğinde uzman değilim)
DMaster

1
değerlendirilmekte olan bir hata varsa, sonuçlar acı verici olabilir; burada soru GOPATHsadece nasıl ihraç edildi
Paweł Prażak

0

Düzenlemenizle ~/.bash_profileaşağıdaki satırı eklemek için:

$ export GOPATH=$HOME/work

Kaydedin ve düzenleyicinizden çıkın. Ardından,~/.bash_profile

$ source ~/.bash_profile

Not: go install çalıştırıldığında ikili dosya oluşturmak için GOBIN yolunu ayarlayın

$ export GOBIN=$HOME/work/bin


-1

Resmi talimatlarda yazıldığı gibi :

GOPATH ortam değişkeni, çalışma alanınızın konumunu belirtir. Varsayılan olarak ana dizininizin içine git adlı bir dizini kullanır, bu nedenle Windows'ta $ HOME / Unix'e, $ home / go Plan 9'a ve% USERPROFILE% \ go (genellikle C: \ Kullanıcılar \ Adınız \ go) olur. Farklı bir konumda çalışmak isterseniz, GOPATH'ı bu dizinin yoluna ayarlamanız gerekir. (Bir başka yaygın kurulum da GOPATH = $ HOME ayarlamasıdır.) GOPATH'ın Go kurulumunuzla aynı yol olmaması gerektiğini unutmayın.

Yani örneğin, (kullanarak JetBrains WebStorm içinde kodlama eğer Git eklentisi ) kullanarak, ayarlamak isteyebilirsiniz GOPATHolarak /Users/<user>/WebstormProjects.

Daha basit bir deyişle, Go projelerinizin olmasını istediğiniz yere ayarlayın.


-1

"Dışa aktarma" çözümünü, diğer kullanıcıların önerdiği gibi kullanabilirsiniz. Size kalıcı kolaylık sağlamak için başka bir çözüm sunmak istiyorum: Go komutlarını çalıştırırken GOPATH olarak herhangi bir yolu kullanabilirsiniz.

Öncelikle, adlı küçük Aracı indirmek gerekir gost: https://github.com/byte16/gost/releases . Ubuntu kullanıyorsanız, linux sürümünü indirebilirsiniz ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).

Ardından, paketini açmak için aşağıdaki komutları çalıştırmanız gerekir:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

Yürütülebilir bir dosya alırsınız gost. /usr/local/binRahat kullanım için taşıyabilirsiniz :

$ sudo mv gost /usr/local/bin

Eğer içine GOPATH olarak kullanmak istediğiniz yolu eklemek için aşağıdaki komutu çalıştırın pathspace gost korur. Yola daha sonra kullanacağınız bir ad vermek gerekir.

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

İstediğiniz herhangi bir Git komutunu şu biçimde çalıştırın:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

Örneğin, çalıştırmak istediğiniz go get github.com/go-sql-driver/mysqlile /home/foobar/bar, hemen altında olarak yapmak GOPATH olarak:

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

GOPATH'ı ayarlamanıza ve komutu çalıştırmanıza yardımcı olur. Ama içine yolunu eklemiş unutmayın gostbireyin pathspace . Eğer herhangi bir alt dizin seviyesinin /home/foobar/baraltındaysanız, aynı komutu kısaca yapacak olan aşağıdaki komutu da çalıştırabilirsiniz:

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

gostGOPATH'leri yönetmenize ve Go komutlarını çalıştırmanıza yardımcı olabilecek Basit bir Go Aracıdır. Diğer Go komutlarını çalıştırmak için nasıl kullanılacağı hakkında daha fazla bilgi için sadece çalıştırabilirsiniz gost help goCmdName. Örneğin hakkında daha fazla bilgi edinmek istiyorsanız install, aşağıdaki kelimeleri yazmanız yeterlidir:

$ gost help install

Daha fazla bilgiyi projenin README'sinde de bulabilirsiniz: https://github.com/byte16/gost/blob/master/README.md


-1

PATH'ı kullandığınız terminale (bash veya zsh) göre güncellemelisiniz.

  1. Terminalin kabuk komut dosyasını açın ~/.bashrcveya ~/.zshrcbir düzenleyicide açın
   vi ~/.zshrc
      (or)
   code ~/.zshrc
  1. Zaten bulduysanız aşağıdaki GOPATH'i güncelleyin veya aşağıdaki satırı ekleyin.

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

Burada :, sistemdeki GO projelerinizin farklı konumlarından noktalı virgülle ayrılmış bir veya daha fazla yolu GOPATHortam değişkenine /path/1:path/2:path/3vb. Ekleyebilirsiniz .

Benim durumumda, yukarıda gösterildiği gibi, biri kökten $HOME/godiğeri de projeler dizininden 2 yol ekledim:/$HOME/projects/go

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.