Bagaimana cara SET variabel lingkungan GOPATH di Ubuntu? File apa yang harus saya edit?


258

Saya mencoba melakukan go get:

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

dan gagal dengan kesalahan berikut:

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

ketika saya melakukan go env, daftar nilai Go ditampilkan seperti di bawah ini:

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"

jelas GOPATH tidak diatur, bagaimana dan di mana saya mengaturnya?

Saya melihat banyak utas yang menyebutkan kesalahan ini tetapi tidak ada yang memberikan jawaban untuk pertanyaan saya, file mana yang perlu diedit untuk memberikan nilai untuk jalur ini?


Shell apa yang Anda gunakan?
fuz

3
Selain jawaban tentang apa yang mengaturnya, lihat jawaban SO ini , yang menjelaskan apa GOPATH itu, dan bagaimana seharusnya digunakan secara umum
Louis Maddox



1
Catatan: Go 1.8+ (Q2 2017) akan ditetapkan GOPATHuntuk Anda: lihat jawaban saya di bawah ini .
VonC

Jawaban:


284

Jalan baru:

Lihatlah jawaban ini.

Cara lama:

Cukup tambahkan baris berikut ke ~ / .bashrc dan ini akan bertahan. Namun, Anda dapat menggunakan jalur lain yang Anda suka sebagai GOPATH alih-alih $ HOME / masuk dalam sampel saya.

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

14
Jalan itu ada /usr/share/godi Ubuntu 13,10 saya.
tsusanka

35
JANGAN gunakan / usr / share / go. GOPATH adalah "ruang kerja" go, tempat ia mengunduh paket, dan sebagainya. Buat direktori baru dan gunakan itu. Saya rekomendasikan ~ / .go
Bryan Larsen

16
Sebagaimana dinyatakan dalam jawaban user2128535, GOROOT harus disetel ke / usr / lib / go
trungly


12
Ingatlah untuk $ source ~/.bashrc;)
eversor

65

Ubuntu 14.04

export GOPATH=$HOME/go

Selain itu Anda dapat menambahkan string ini ke file

$HOME/.bashrc

1
Komentar Anda membingungkan karena merujuk pada baris yang sekarang dihapus dari jawaban aslinya.
Marcel Burkhard

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

61

GOPATH harus diatur ke direktori kosong yang baru dibuat. Ini adalah "ruang kerja", tempat ia mengunduh paket, dan lain-lain. Saya menggunakan ~ / .go.

Sebagai contoh:

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

sumber: http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/


1
Terima kasih banyak
Dylan B

35

Cara Baru: Go Modul

Sejak Go 1.11, Anda tidak perlu menggunakan GOPATH lagi. Cukup buka direktori proyek Anda dan lakukan ini sekali:

go mod init github.com/youruser/yourrepo
  • Dengan ini, Go membuat root modul di direktori itu.
  • Anda dapat membuat modul sebanyak yang Anda inginkan.
  • Untuk petunjuk langkah demi langkah, lihat juga jawaban ini .

Cara Lama: GOPATH

Jika Anda bersikeras bekerja dengan GOPATH maka perhatikan ini:

  • Sejak Go 1.8, Anda tidak perlu mengatur GOPATH atau GOROOT Anda.
  • GOPATH secara default ada di bawah direktori pengguna / rumah Anda.

Dari dokumentasi :

Jika tidak ada GOPATH yang diset, diasumsikan $ HOME / go on Unix systems dan% USERPROFILE% \ go di Windows. Jika Anda ingin menggunakan lokasi khusus sebagai ruang kerja Anda, Anda dapat mengatur variabel lingkungan GOPATH.


34

Jika misalnya, ini adalah Ubuntu, setelah menginstal paket:

$sudo apt install golang -y

Cukup tambahkan baris berikut ke ~ / .bashrc (Dari pengguna Anda)

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

19
export GOPATH=/path/desired/here

Tidak perlu mengedit file apa pun, kita cukup menggunakan perintah di atas untuk langsung mengedit variabel lingkungan Go.


11
Ini tidak persisten sekalipun. Jika Anda ingin opsi ini tetap - kemungkinan besar Anda lakukan - Anda harus menambahkannya ke beberapa file yang sedang dimuat saat login.
Cubic

1
Terima kasih! Apa yang sebagian besar pengguna tidak pernah pikirkan adalah bahwa ada orang yang memulai dengan linux dan jika tidak ada dokumentasi yang mengatakan apa yang Anda katakan (Karena semua orang mengira itu adalah fakta yang diketahui) bagaimana kita belajar / menemukan informasi?
PlayHardGoPro

19

Tulis kode ini di Terminal.

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

Catatan : Ini akan mengatur ulang pada setiap jendela Terminal baru atau sistem restart.

Agar gigih, tempel kode di bawah ini di .zshrcatau .bashrcfile Anda sesuai dengan shell Anda. File-file itu di Direktori Beranda Anda . Akan seperti di bawah ini.

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

11

Anda akan membutuhkan GOPATH nanti juga. Jadi tambahkan ke ~/.bashrc.


10
Ya, saya sudah memikirkan hal ini, tetapi menolak kemungkinan bahwa seorang pria akan memiliki kotak Ubuntu dengan cangkang khusus dan tidak mengetahuinya sebagai sangat tidak mungkin :-)
Vytautas Shaltenis

9

Jika Anda telah menyiapkan apa pun yang memerlukan modifikasi variabel lingkungan misalnya Java, Go dll ini akan sangat akrab.

Saya akan berasumsi bahwa Anda memiliki struktur direktori berikut di suatu tempat sebagai jalur Go Anda:

\---[folder name]
    +---bin
    +---pkg
    \---src
  • buka terminal baru
  • Tipe sudo nano /etc/environment
  • temukan PATH=...dan lanjutkan dan tambahkan titik dua :setelah jalur terakhir lalu tempelkan go pathmisal lengkap Anda/home/user/gocode

dan Anda selesai, Ini harus membuatnya gigih melalui sistem.


1
Saya tidak melihat mengapa mengubah $ PATH jika go bekerja untuk David. Dia perlu menetapkan $ GOPATH (lihat jawaban dari Daniel Lin). David dapat menggabungkan kedua pendekatan (atau mengaturnya di / etc / profile atau $ HOME / .profile). Ngomong-ngomong, saya sarankan David untuk membaca tautan ini: golang.org/doc/install dan golang.org/doc/code.html#GOPATH
zk82

2
@ zk82 $ GOPATH adalah variabel lingkungan, dan saya tidak melihat mengapa mengedit variabel lingkungan Anda untuk menambahkan variabel ini menjadi masalah. Hal yang sama berlaku untuk $ JAVA_HOME dan kerangka kerja lain yang memerlukan konfigurasi seperti itu.
ymg

Ok aku paham. Terima kasih atas komentar Anda.
zk82

3

Inilah yang membuatnya bekerja untuk saya di Ubuntu 15.10 menggunakan fish shell:

# ~/.config/fish/config.fish

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

Lalu saya harus mengubah izin pada gofolder (itu diatur ke root)

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

3

go path dapat berupa setiap tempat yang Anda inginkan, cukup buat direktori dan setel variabel jalur global atas nama GOPATH ke lingkungan Anda.

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

2

Dengan Go 1.8 (Q2 2017), Anda tidak perlu mengedit file apa pun jika Anda menerima nilai default GOPATH(ditetapkan untuk Anda)

$HOME/go

Anda dapat melihat komentar pada masalah 17262 dan suara twitter terkait :

Dengan memilih default GOPATH, kita dapat membuat dokumentasi kita lebih mudah karena kita dapat mengatakan hal-hal seperti

$ go get github.com/foo/bar

akan memeriksa github.com/foo/barrepo menjadi $HOME/go/src/github.com/foo/bar.

Kita tidak perlu mengalihkan perhatian pendatang baru dengan harus menetapkan env var, yang perlu kita lakukan adalah menaruh sedikit tanda kurung di bagian bawah halaman

$HOME/goadalah jalur default ke ruang kerja go Anda.
Jika Anda ingin mengubah jalur ini, setel GOPATHvariabel ke sesuatu yang Anda pilih.


2

Lingkungan go saya terlihat mirip dengan milik Anda.

$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"

Saya mengatasinya dengan mengatur GOPATH ke / usr / lib / go . Cobalah.

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

Saya membaca bahwa pengaturan GOPATH sama dengan direktori instalasi adalah ide yang buruk. Oo
ankush981

2

GOPATH adalah variabel lingkungan ke lokasi ruang kerja Anda. GOROOT adalah variabel lingkungan ke direktori instalasi Anda. Meskipun GOROOT dan GOPATH secara otomatis diatur (jika tidak akan ada bug) selama waktu instalasi, untuk menentukannya secara manual Anda dapat mengikuti proses di bawah ini. Selain itu, untuk informasi lebih lanjut, Anda dapat merujuk ke halaman wiki GO .

Lebih baik mengatur GOPATH ke direktori di dalam direktori home Anda, mis. $ HOME / go,% USERPROFILE% \ go (Windows).

  1. Ini adalah solusi mac, yang diuji pada macOS Sierra, ver. 10.12, dan juga di Gogland-EAP, yang telah diperkenalkan sebagai pemrograman IDE untuk Go oleh JetBrains.

Pada tipe Terminal Anda

vim ~/.profile

dalam dokumen yang terbuka di Terminal tekan i dan tambahkan jalur berikut

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

tekan ESC dan ketik : x . Terakhir, Anda harus me-restart ( menutup dan membuka ) terminal Anda atau Logout dan Login lagi.

  1. Untuk konfigurasi Windows dan Linux, lihat halaman Go wiki di Githab pada Pengaturan GOPATH-Golang .

HATI-HATI Jangan mengatur GOROOT dan GOPATH ke direktori yang sama, jika tidak, Anda akan mendapat peringatan.


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

Dan Anda mungkin ingin memeriksa dengan $ go env


2

(Ubuntu)

Jika Anda tidak menetapkan GOPATH, standarnya akan digunakan.

Anda harus menambahkan $ GOPATH / bin ke PATH Anda untuk mengeksekusi binary yang terinstal di $ GOPATH / bin, atau Anda perlu mengetik $ GOPATH / bin / the-command. Tambahkan ini ke ~ / .bash_profile Anda

export PATH=$GOPATH/bin:$PATH

Perintah GOPATH saat ini:

go env GOPATH

Mengubah perintah GOPATH:

export GOPATH=$HOME/your-desired-path


0

Ini merupakan hal yang paling menyebalkan untuk dihadapi. Dengan harapan menghemat waktu Anda.

JIKA pergi diinstal sebagai pengguna root. Pengguna root file teks bash_profile sistem Anda ~ / .bash_profile perlu memiliki $ GOROOT yang ditugaskan ke direktori install go dan $ GOPATH perlu ditugaskan untuk masuk ke direktori / 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]
    ...

pastikan path untuk menjalankan biner ada di path Anda di .bash_profile

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

PATH ini dapat sepanjang string yang diperlukan..untuk menambahkan item baru yang dipisahkan oleh titik dua:

keluar vi editor dan simpan profil bash (: wq artinya menulis dan berhenti)

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

Anda harus keluar dari terminal dan masuk kembali ke profil untuk memulai lagi..atau Anda bisa mulai memulainya dengan menggunakan ekspor.

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

Anda dapat memverifikasi go env:

...$# go env

Yay!

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

Sekarang Anda dapat sudo dan pergi akan dapat mengunduh dan membuat direktori di dalam go / src dan Anda dapat melihat apa yang Anda coba selesaikan.

contoh

# sudo go get github.com/..

Sekarang Anda akan mengalami masalah lain .. Anda mungkin tidak menginstal git .. itu petualangan lain .. :)


Jangan lakukan ini. Anda tidak ingin mengkompilasi sesuatu sebagai root dan Anda tidak ingin go getmeletakkan apa pun di dekat Anda GOROOT.
Dave C

Bagaimana cara menjalankan satu di bawah pengguna normal? Terima kasih banyak. Hal-hal tidak berhasil selama proses instalasi dan saya akhirnya menggunakan mesin virtual uji untuk mencoba GO.
user3151532

0

Di mesin Fedora 20 saya, saya menambahkan baris berikut ke ~ / .bashrc saya:

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

3
Jangan diaturGOROOT . (Kecuali jika Anda berada di subset yang sangat kecil dari orang-orang yang menggunakan distribusi biner dari Go tetapi menginstalnya di suatu tempat di mana non-standar.)
Dave C

0

Solusi lain: Ekspor setiap GO*variabel lingkungan darigo 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
evalbiasanya ide yang buruk dan berlebihan dalam situasi ini IMHO
Paweł Prażak

@ PawełPrażak Mengapa? (Saya bukan ahli dalam skrip shell)
DMaster

1
jika ada bug dalam apa yang sedang dievaluasi, konsekuensinya bisa menyakitkan; di sini pertanyaannya adalah bagaimana cara mengekspor GOPATHsaja
Paweł Prażak

0

Edit Anda ~/.bash_profileuntuk menambahkan baris berikut:

$ export GOPATH=$HOME/work

Simpan dan keluar dari editor Anda. Kemudian, sumber~/.bash_profile

$ source ~/.bash_profile

Catatan: Tetapkan jalur GOBIN untuk menghasilkan file biner saat go install dijalankan

$ export GOBIN=$HOME/work/bin


-1

Seperti tertulis dalam instruksi resmi :

Variabel lingkungan GOPATH menentukan lokasi ruang kerja Anda. Defaultnya adalah direktori yang bernama go inside direktori home Anda, jadi $ HOME / go Unix, $ home / go on Plan 9, dan% USERPROFILE% \ go (biasanya C: \ Users \ YourName \ go) di Windows. Jika Anda ingin bekerja di lokasi yang berbeda, Anda perlu mengatur GOPATH ke jalur ke direktori itu. (Pengaturan umum lainnya adalah mengatur GOPATH = $ HOME.) Perhatikan bahwa GOPATH tidak boleh jalur yang sama dengan instalasi Go Anda.

Jadi misalnya, jika Anda membuat kode dalam Jetbrains Webstorm (menggunakan plugin Go ), Anda mungkin ingin mengaturnya GOPATHsebagai/Users/<user>/WebstormProjects .

Dengan kata sederhana, atur ke mana pun Anda ingin proyek Go Anda berada.


-1

Anda dapat menggunakan solusi "ekspor" seperti yang disarankan orang lain. Saya ingin memberi Anda solusi lain untuk kenyamanan permanen: Anda dapat menggunakan jalur apa pun sebagai GOPATH saat menjalankan perintah Go.

Pertama, Anda perlu mengunduh alat kecil bernama gost: https://github.com/byte16/gost/releases . Jika Anda menggunakan ubuntu, Anda dapat mengunduh versi linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).

Maka Anda perlu menjalankan perintah di bawah ini untuk membukanya:

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

Anda akan mendapatkan executable gost. Anda dapat memindahkannya ke /usr/local/binuntuk penggunaan yang nyaman:

$ sudo mv gost /usr/local/bin

Jalankan perintah di bawah ini untuk menambahkan jalur yang ingin Anda gunakan sebagai GOPATH ke dalam pathspace yang gost dipertahankan. Diperlukan untuk memberi nama path yang akan Anda gunakan nanti.

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

Jalankan perintah Go yang Anda inginkan dalam format:

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

Misalnya, Anda ingin menjalankan go get github.com/go-sql-driver/mysqldengan /home/foobar/barsebagai GOPATH, lakukan saja seperti di bawah ini:

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

Ini akan membantu Anda untuk mengatur GOPATH dan menjalankan perintah. Tetapi ingat bahwa Anda telah menambahkan path ke gostdalam pathspace . Jika Anda berada di bawah level subdirektori apa pun /home/foobar/bar, Anda bahkan dapat menjalankan perintah di bawah ini yang akan melakukan hal yang sama:

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

gostadalah Tool of Go Sederhana yang dapat membantu Anda mengelola GOPATHs dan menjalankan perintah Go. Untuk detail lebih lanjut tentang cara menggunakannya untuk menjalankan perintah Go lainnya, Anda bisa menjalankannya gost help goCmdName. Misalnya Anda ingin tahu lebih banyak tentang install, ketik saja kata-kata di bawah ini di:

$ gost help install

Anda juga dapat menemukan rincian lebih lanjut dalam README proyek: https://github.com/byte16/gost/blob/master/README.md


-1

Anda harus memperbarui PATH berdasarkan terminal (bash atau zsh) yang Anda gunakan.

  1. Buka file skrip shell dari terminal yaitu ~/.bashrcatau ~/.zshrcdi editor
   vi ~/.zshrc
      (or)
   code ~/.zshrc
  1. Perbarui GOPATH di bawah ini jika sudah ditemukan atau tambahkan baris di bawah ini.

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

Di sini Anda dapat menambahkan satu atau lebih jalur yang dipisahkan oleh tanda titik koma :dari berbagai lokasi proyek GO Anda pada sistem ke GOPATHvariabel lingkungan yaitu/path/1:path/2:path/3 dll.

Dalam kasus saya, saya telah menambahkan 2 jalur, seperti yang ditunjukkan di atas, satu dari root $HOME/godan satunya lagi dari direktori proyek:/$HOME/projects/go

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.