Saya mencoba menginstal paket kustom saya untuk file main.go saya. Namun, saat saya lari
go install custom.go
Saya mendapat kesalahan ini
go install: no install location for .go files listed on command line (GOBIN not set)
Bagaimana cara mengatur GOBIN?
go install
menginstal paket bukan file individual. Silakan baca semua golang.org/cmd/go dan lihat bagaimana mengatur file Anda.Jawaban:
Pembaruan 2020: sejak Go 1.11 dan pengenalan modul Go ,
GOPATH
tidak diperlukan lagi per proyek, dan default~/go
untuk alat / proyek global yang Anda inginkango get
.Go 1.16 (Q1 2020) harus default
GOBIN
keGOPATH[0]/bin
.Namun untuk saat ini, untuk setiap proyek yang menggunakan modul, Anda tidak akan mendapatkan pesan kesalahan seperti "
go install: no install location ...
" lagi.Jawaban asli 2014:
Periksa
GOPATH
variabel Anda .Yakinkan:
bin
folder di dalam folder GOPATH Anda.Lihat variabel lingkungan GOPATH (di mana 'DIR' adalah
GOPATH
folder):Misalnya, utas ini menggambarkan apa yang terjadi dalam kasus di mana go build dilakukan di luar
GOPATH/src
:Lihat Go Build
Jika sudah selesai
go build
, Anda juga dapat mencobago install
(tidakcustom.go
): Anda ingin menginstal paket, bukan satu file.sumber
Saya mengatur jalur GOBIN dan itu berhasil untuk saya
sumber
cannot install, GOBIN must be an absolute path
:(..
atau~
di jalur yang Anda tentukan? Saya mendapat kesalahan itu dan baru saja beralih ke jalur absolut seperti/home/ben/bin/
atau bahkan$HOME/bin/
. Perintah lengkap saya adalah (di fishshell, go v1.11)env GOBIN=$HOME/bin/ go install testfile.go
.Sebagai seorang pemula, saya menemukan kesalahan ini ketika saya mencoba berbagai perintah go (membangun, menjalankan, dan menginstal). Singkatnya, Anda tidak bisa pergi menginstal sebuah filename.go . Anda hanya dapat menginstal paket.
Ini membingungkan, karena saya telah mengetahui bahwa:
nate:~/work/src/dir $ go run hello/hello.go hello, world.
bekerja dengan baik. Tetapi saya tidak tahu mengapa pemasangan tidak berhasil:
nate:~/work/src/dir $ go install hello/hello.go go install: no install location for .go files listed on command line (GOBIN not set) nate:~/work/src/dir $ go install hello can't load package: package hello: cannot find package "hello" in any of: /opt/go/src/hello (from $GOROOT) /home/ubuntu/work/src/hello (from $GOPATH)
Tidak peduli di direktori mana saya berada:
nate:~/work/src/dir $ cd hello nate:~/work/src/dir/hello $ go install hello.go go install: no install location for .go files listed on command line (GOBIN not set) nate:~/work/src/dir/hello $ go install hello can't load package: package hello: cannot find package "hello" in any of: /opt/go/src/hello (from $GOROOT) /home/ubuntu/work/src/hello (from $GOPATH)
Kebingungan ini karena go run hanya berfungsi dengan file sumber Go (nama file yang diakhiri dengan .go) dan go install hanya menerima paket. Paket diberi nama berdasarkan jalur impor atau jalur sistem file. Jadi:
nate:~/work/src/dir $ go install dir/hello nate:~/work/src/dir $ go install ./hello/ nate:~/work/src/dir/hello $ go install .
semuanya bekerja dengan baik. Yang pertama merujuk ke paket dengan jalur impor, (mengingat bahwa $ GOPATH = "/ home / nate / work", alat go mencari kode sumber di / home / nate / work / src), yang lainnya diartikan sebagai sistem file jalur karena periode terkemuka.
Lihat juga dokumen GOPATH .
sumber
go install
bekerja pada direktori dan jika Anda menentukan file go tertentu, maka itu dapat menyebabkan masalah khusus ini.Sebenarnya ada 2 macam perilaku.
go install <package>
ini didokumentasikan di Mengkompilasi dan menginstal paket dan dependensi. Anda tidak memerlukan GOBIN jika Anda menyetel GOPATH dengan benar.
go install <gofile>
ini tidak didokumentasikan dan Anda memerlukan variabel GOBIN env dalam mode ini.
sumber
go install <gofile>
didokumentasikan,go help packages
yanggo install --help
mengacu pada. Masalahnya adalahgo install
(di 1.9.2 dan yang lebih lama) memiliki perilaku yang tidak konsisten, dalam satu kasus diperlukan dan di kasus lain tidak memerlukan GOBIN untuk ditetapkan secara eksplisit.Seperti jawaban sebelumnya yang ditunjukkan, jika GOPATH env Anda disetel dengan benar ke ruang kerja Anda, Anda tidak perlu menyetel variabel env GOBIN.
Silakan periksa variabel go environment Anda dengan menjalankan $ go env | grep -i "^ GO" dan cari GOROOT dan GOPATH untuk memeriksa apakah GOROOT mengarah ke instalasi sumber GO Anda dan GOPATH mengarah ke ruang kerja Anda.
Jika semuanya sudah benar maka arahkan ke subdir tempat yourpkg.go berada kemudian jalankan $ go build (tanpa nama file) terlebih dahulu dan $ go install (lagi dengan nama file kami) kedua, jika Anda tidak melihat pesan kesalahan di layar Anda paket sudah siap di workspace / pkg / youros /../ yourpackage.a
sumber
Pada windows dengan cygwin tampaknya merupakan ide yang bagus untuk mengatur GOBIN ke $ GOPATH / bin.
dan ingat untuk keluar dari pemisah nama file windows dengan benar:
sumber
Untuk
*nix
sistem, lihat di manago
diinstal, menjalankan perintah berikut:$ which go
keluaran yang mana katakanlah:
/usr/local/go/bin/go
lalu tambahkan entri berikut di
~/.bash_profile
atau di~/.zshrc
:export GOROOT=/usr/local/go export GOPATH=$GOROOT/src //your-go-workspace export GOBIN=$GOROOT/bin //where go-generate-executable-binaries PATH=$PATH:$GOPATH:$GOBIN export PATH
PS: Jangan lupa untuk sumber
~/.bash_profile
atau~/.zshrc
, sebagai berikut:sumber
/usr/local/go/bin
?Mengenai menyetel
GOBIN
versi variabel tidak memerlukannya dan hanya mengandalkanGOPATH
:GOBIN
diperlukan jika kita tidak memiliki paket, yaitu file tersebut langsung ada diGOPATH
direktori. Hal ini mungkin terjadi saat kami mencoba fitur Go sebagai pelajarUntuk proyek Go biasa, file-file tersebut berada di bawah direktori paket. Untuk ini,
GOPATH
sudah cukup baik.Dengan kata lain, kedua solusi berikut akan berhasil: a. Tetapkan
GOBIN
secara eksplisit sebagai $ GOPATH / bin [hanya untuk tujuan pembelajaran, dapat dihindari] b. Buat subdirektori yang akan menjadi nama paket Anda dan pindahkan file .go ke dalamnyaSaya kira utilitas Go harus menghapus kesalahan di atas dan menangani skenario dengan lebih baik - berdasarkan apakah argumennya adalah direktori atau file sumber
sumber
Untuk WINDOWS pengguna
Buka prompt perintah (
Win
+r
lalu ketikcmd
) atau jendela PowerShell (Win
+x
lalu ketiki
).Mengatur GOPATH
go env -w GOPATH=c:\your-go-work
Detail selengkapnya ada di tautan di bawah ini https://github.com/golang/go/wiki/SettingGOPATH#windows
Menyetel GOBIN
go env -w GOBIN=C:\somewhere\else\bin
Saya sarankan untuk memeriksa contoh kode yang diberikan oleh golang. Itu sangat membantu saya. https://golang.org/doc/code.html#Command
sumber
Di Windows:
go env -w GOBIN=C:\Users\yourname\go\bin
Konfirmasikan dengan
go env
perintah bahwa GOBIN telah diatur, kemudiango install
perintah dengan benar menyimpan file yang dapat dieksekusi dengan benar di direktori bin.sumber
Saya juga mengalami masalah yang sama (GOBIN tidak perlu disetel secara terpisah), pastikan Anda memiliki yang berikut ini
go install <your_module>
sumber
Anda tidak memerlukan $ GOBIN jika Anda telah menyetel $ GOPATH dengan benar. Jika demikian, cukup periksa ulang apakah proyek Anda berada di folder $ GOPATH / src .
sumber
Dari https://golang.org/cmd/go/#hdr-Environment_variables :
dan https://golang.org/cmd/go/#hdr-GOPATH_environment_variable :
dan https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more
Jadi, pada dasarnya Anda dapat menggunakan GOBIN untuk mengganti sementara atau permanen lokasi pemasangan biner default (mis
$GOPATH/bin
.). Saya berhasil menginstal 1-file go "script" menggunakanenv GOBIN=$HOME/bin/ go install testfile.go
. Ini dilakukan menggunakan go v1.11.sumber
Mencoba
export GOROOT=""
export PATH=$PATH:$GOROOT/bin
sumber