Main.go dosyam için özel paketimi yüklemeye çalışıyorum. Ancak koştuğumda
go install custom.go
Bu hatayı aldım
go install: no install location for .go files listed on command line (GOBIN not set)
GOBIN'i nasıl ayarlarım?
Main.go dosyam için özel paketimi yüklemeye çalışıyorum. Ancak koştuğumda
go install custom.go
Bu hatayı aldım
go install: no install location for .go files listed on command line (GOBIN not set)
GOBIN'i nasıl ayarlarım?
Yanıtlar:
Güncelleme 2020: Go 1.11 ve beri Git modüllerinin tanıtımı , GOPATH
artık proje başına gerekli değildir ve varsayılan~/go
küresel araçlar için / yapacağınız proje go get
.
1,16'ya gidin (Q1 2020) varsayılan GOBIN
olarak GOPATH[0]/bin
.
Ama şimdilik, modül kullanan herhangi bir proje için, go install: no install location ...
artık " " gibi bir hata mesajı almayacaksınız .
Orijinal cevap 2014:
GOPATH
Değişkeninizi kontrol edin .
Emin olmak:
- kaynakların altında
GOPATH/src
bin
senin GOPATH klasörü içinde klasör.GOPATH ortam değişkenine bakın (burada 'DIR' bir GOPATH
klasördür):
bin
Dizin derlenmiş komutları tutar.
Her komut, kaynak dizini için adlandırılır, ancak tüm yol değil, yalnızca son öğesi adlandırılır. Yani, kaynak içinde olan komutDIR/src/foo/quux
içineDIR/bin/quux
değil, içine kurulurDIR/bin/foo/quux
. "foo/
" Öneki kaldırılır, böylelikle yüklenen komutlara ulaşmakDIR/bin
için ön eki ekleyebilirsinizPATH
.
Eğer
GOBIN
ortam değişkeni ayarlanır, komutlar dizini yerine o isimleri yüklenirDIR/bin
.GOBIN
mutlak bir yol olmalı.
Örneğin, bu iş parçacığı , aşağıdakilerin dışında bir go derleme yapıldığında ne olduğunu gösterir GOPATH/src
:
Görünüşe göre ayarınız
GOPATH
ayarlanmış~/go
ancak sizgo install
komutu çalıştırdınız~/dev/go
Go Build'i görün
Go yolu, Go kaynak kodunu içeren dizin ağaçlarının bir listesidir. Standart Go ağacında bulunamayan içe aktarmaları çözmek için danışılır.
Yaptıysanız go build
, bir go install
(hayır custom.go
) da deneyebilirsiniz : tek bir dosya değil, paketi kurmak istiyorsunuz.
GOBIN yolunu belirledim ve bu benim için çalıştı
export GOBIN=[WorkspacePath]/bin
cannot install, GOBIN must be an absolute path
:(
..
yoksa ~
yolunda belirttiğiniz? Bu hatayı aldım ve sadece /home/ben/bin/
veya hatta gibi mutlak bir yola geçtim $HOME/bin/
. Tam komutum şuydu (balık kabuğunda, v1.11'e gidin) env GOBIN=$HOME/bin/ go install testfile.go
.
Yeni başlayan biri olarak, çeşitli go komutlarını denediğimde (derleme, çalıştırma ve yükleme) bu hatayla karşılaştım. Kısacası, bir kurmaya gidemezsiniz dosya adı . Yalnızca bir paket kurabilirsiniz.
Bu kafa karıştırıcıydı çünkü şunu öğrenmiştim:
nate:~/work/src/dir $ go run hello/hello.go
hello, world.
harika çalışıyor. Ancak yüklemenin neden işe yaramadığını anlayamadım:
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)
Hangi dizinde olduğum önemli değil:
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)
Bu karışıklık, go run'un yalnızca Go kaynak dosyalarıyla (.go ile biten dosya adları) çalışması ve go install'un yalnızca paketleri kabul etmesidir . Paketler, içe aktarma yollarına veya dosya sistemi yollarına göre adlandırılır. Böylece:
nate:~/work/src/dir $ go install dir/hello
nate:~/work/src/dir $ go install ./hello/
nate:~/work/src/dir/hello $ go install .
hepsi harika çalışıyor. İlki, içe aktarma yoluna göre paketi ifade eder ($ GOPATH = "/ home / nate / work", go araçları / home / nate / work / src içindeki kaynak kodunu arar), diğerleri dosya sistemi olarak yorumlanır önde gelen dönemler nedeniyle yollar.
Ayrıca GOPATH belgelerine bakın .
go install
dizinler üzerinde çalışır ve belirli bir go dosyası belirtirseniz, bu belirli soruna neden olabilir.
Aslında 2 farklı davranış türü vardır.
go install <package>
bu, Paketleri ve bağımlılıkları derleme ve kurma bölümünde belgelenmiştir GOPATH'ı doğru ayarlarsanız GOBIN'e ihtiyacınız yoktur.
go install <gofile>
bu belgelenmemiştir ve bu modda GOBIN env değişkenine ihtiyacınız vardır.
go install <gofile>
belgelenmiştir, go help packages
hangi go install --help
atıfta bulunur. Sorun, go install
(1.9.2 ve önceki sürümlerde) tutarsız davranışa sahip olmasıdır, bir durumda gerektirir ve diğerinde GOBIN'in açıkça ayarlanmasını gerektirmez.
Geçmiş yanıtların işaret ettiği gibi, GOPATH ortamınız çalışma alanınıza doğru bir şekilde ayarlanmışsa, GOBIN env değişkenini ayarlamanıza gerek yoktur.
Lütfen $ go env | grep -i "^ GO" ve GOROOT'un GO kaynak kurulumunuza ve GOPATH'ın çalışma alanınıza işaret edip etmediğini kontrol etmek için GOROOT ve GOPATH'a bakın.
Her şey doğruysa, pkg.go'nuzun bulunduğu alt dizine gidin, ardından önce $ go build (dosya adı olmadan) ve $ go install (tekrar dosya adınızla) çalıştırın, ekranda herhangi bir hata mesajı görmezseniz, paket, çalışma alanınızda / pkg / sizin /../ paketiniz.a'da hazır
Cygwin ile pencerelerde GOBIN'i $ GOPATH / bin olarak ayarlamak iyi bir fikir gibi görünüyor.
ve Windows dosya adı ayırıcısından doğru şekilde çıkmayı unutmayın:
$ echo $GOROOT
C:\Go\
carl@rainier ~/gocode/src/github.com/user/hello
$ echo $GOPATH
C:\cygwin64\home\carl\gocode
carl@rainier ~/gocode/src/github.com/user/hello
$ echo $GOBIN
C:\cygwin64\home\carl\gocode\bin
İçin *nix
sistemde, nereye bakmak go
aşağıdaki komutu çalıştırarak, yüklenir:
$ which go
hangi çıktı diyelim:
/usr/local/go/bin/go
ardından aşağıdaki girişleri içine ~/.bash_profile
veya içine ekleyin ~/.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
Not: Kaynak yapmayı ~/.bash_profile
veya ~/.zshrc
aşağıdaki gibi yapmayı unutmayın :
$ source ~/.bash_profile
/usr/local/go/bin
?
Ayarı ile ilgili olarak GOBIN
daha önce belirlemiş olduğu ve sadece güvenerek değil değişken sürümünü GOPATH
:
GOBIN
bir paketimiz yoksa, yani dosya doğrudan GOPATH
dizinde ise gereklidir . Bu, öğrenciler olarak Go özelliklerini denediğimizde büyük olasılıkla
Tipik Go projeleri için, dosyalar paket dizinlerinin altındadır. Bunlar için GOPATH
yeterince iyi.
Diğer bir deyişle, aşağıdaki çözümlerin ikisi de işe yarayacaktır: a. Set GOBIN
$ GOPATH / bin olarak açıkça b [Sadece öğrenme amaçları için, önleyebilirsiniz]. Paket adınız olacak bir alt dizin oluşturun ve .go dosyalarını buraya taşıyın
Sanırım Go yardımcı programları yukarıdaki hatayı kaldırmalı ve senaryoyu daha iyi ele almalı - argümanın bir dizin mi yoksa bir kaynak dosya mı olduğuna bağlı olarak
İçin WINDOWS kullanıcıları
Bir komut istemi açın ( Win
+ r
ardından yazın cmd
) veya bir powershell penceresi ( Win
+ x
sonra yazın i
).
GOPATH'ı Ayarlama
NOT: Go kurulumunuzla aynı yol
GOPATH
olmamalıdır .
go env -w GOPATH=c:\your-go-work
Aşağıdaki bağlantıda daha fazla ayrıntı https://github.com/golang/go/wiki/SettingGOPATH#windows
GOBIN ayarlanıyor
go env -w GOBIN=C:\somewhere\else\bin
Golang tarafından sağlanan kod örneğine bakmanızı tavsiye ederim. Bana çok yardımcı oldu. https://golang.org/doc/code.html#Command
Windows'ta:
go env -w GOBIN=C:\Users\yourname\go\bin
go env
GOBIN'in ayarlandığını komutla onaylayın , ardından go install
komut yürütülebilir dosyayı bin dizinine düzgün bir şekilde kaydeder.
Ben de aynı sorunu yaşadım (GOBIN'in ayrı ayarlanmasına gerek yoktur), şunlara sahip olduğunuzdan emin olun
go install <your_module>
Gönderen https://golang.org/cmd/go/#hdr-Environment_variables :
GOBIN 'go install' komutunun kurulacağı dizin.
ve https://golang.org/cmd/go/#hdr-GOPATH_environment_variable :
GOBIN ortam değişkeni ayarlanmışsa, komutlar DIR / bin yerine adlandırdığı dizine yüklenir. GOBIN mutlak bir yol olmalıdır.
ve https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more
Modüle duyarlı modda, GOPATH artık bir derleme sırasında içe aktarmaların anlamını tanımlamaz, ancak indirilen bağımlılıkları (GOPATH / pkg / mod içinde) ve yüklü komutları (GOBIN ayarlanmadıkça GOPATH / bin içinde) depolar.
Bu nedenle, temel olarak varsayılan ikili kurulum konumunu (yani $GOPATH/bin
) geçici veya kalıcı olarak geçersiz kılmak için GOBIN'i kullanabilirsiniz . 1 dosyalık go "komut dosyasını" kullanarak başarıyla yükledim env GOBIN=$HOME/bin/ go install testfile.go
. Bu, go v1.11 kullanılarak yapıldı.
Deneyin
export GOROOT=""
export PATH=$PATH:$GOROOT/bin
go install
yükler . Lütfen tüm golang.org/cmd/go'yu okuyun ve dosyalarınızı nasıl kuracağınızı görün.