Go get ile "tanınmayan içe aktarma yolu"


93

Bir yüklemeye çalışıyorum web.go, ancak go get github.com/hoisie/webgeri dönüşler çalışıyor

package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"

ve bu, başka hiçbir şey iade etmeden önce çeşitli paketlerle bir süre devam eder. go envbana verir:

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

Nasıl kurabilirim web.go? Github sayfasındaki README'de go get(yerine go install) kullanmaktır . Go sürümüm go version go1.2 linux/amd64.


3
GOROOT ihraç edildi ancak GOPATH yok mu? GOROOT, GOBIN'den farklı mı? Go'yu nasıl kurdunuz? Ortamınızı nasıl oluşturdunuz?
Volker

Go'yu golang.org/doc/install sayfasını takip ederek kurdum . GOPATH yerine ne koyacağımdan emin değildim.
q3d

Yanıtlar:


102

Sorunlar bir geçersizlikle ilgilidir GOROOT.

Sanırım içeri girdin /usr/local/go.
Öyleyse yolunuzu GOROOTdeğerine değiştirin /usr/local/go/bin.

Çalışma alanınızın (GOPATH) adresinde bulunmasını istediğiniz anlaşılıyor /home/me/go.

Bu, sorununuzu çözebilir.
Bunu burada bulunan bash profilinizin altına ekleyin =>$HOME/.profile

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

Eski referanslarını kaldırdığınızdan emin olun GOROOT.

Ardından web.go'yu yeniden yüklemeyi deneyin.

Bu işe yaramazsa, Ubuntu'nun sizin için Go'yu yüklemesini sağlayın.

sudo apt-get install golang

Eğitici video: http://www.youtube.com/watch?v=2PATwIfO5ag


16
Neredeyse asla GOROOT'u ayarlamamalısınız. PATH bildiriminiz / usr / local / go / bin isabetli değil. Ayrıca, ubuntu paketlerinin 1.2 olan resmi sürümün biraz gerisinde olduğuna dikkat etmelisiniz.
JimB

2
Resmi siteden go yükleme talimatlarını izlediğimde (tar dosyasından / usr / local içine yükleyin) GOROOT'u yukarıdaki gibi değiştirene kadar yukarıdaki hatayı aldım.
Drew

1
Fedora 20'ye yeni golang 1.3 yükledim ve go getaynı hatayı veriyor. GOROOT, /usr/ usr / local değil, / usr içine kurulu olarak ayarlanmıştır . Set GOPATHiçin$HOME/go . Başka neyin kontrol edileceğine dair bir fikriniz var mı?
Dfr

15
Kendime cevap veriyorum: rahatsız edici GOROOT sorunu görünüyor.
Dfr

5
GOROOT'u ayarlamamak için +1. Ayarını kaldırdım, ayarlanmadığından emin echo $GOROOTolduktan sonra GO'nun hala yaptığı ortamda go envolduğunu ve /usr/local/gokurulduğum yerde olduğunu kontrol ettim (bu nedenle herhangi bir durumda ayarlamaya gerek yok)
ortamda StartupGuy

37

Go brewwith'ı OSX 10.11'e yükledim ve şunu ayarlamam GOROOTgerektiğini öğrendim :

/usr/local/Cellar/go/1.5.1/libexec

(Elbette bu yoldaki sürümü sahip olduğunuz go sürümüyle değiştirin)

Brew, gotool'u kandıran sembolik bağlar kullanıyor. Bu yüzden ana sayfadaki bağlantıları takip edin.


Ah, sonunda işe yarayan bir şey buldum. Teşekkürler Eric!
Mir Adnan

23

Eski go sürümünden (eski PPA'dan yüklenen) ubuntu 14.04'teki daha yeni (1.2.1) varsayılan paketlere geçtikten sonra tam olarak aynı sorunu yaşadım.

İlk adım, mevcut gitmeyi temizlemek oldu:

sudo apt-get purge golang*

Uyarıların ardından hangi çıktılar:

dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed

Go'nun kaldırılması bazı dosyaları geride bırakıyor gibi görünüyor ve bu da daha yeni kurulumun kafasını karıştırabilir. Daha doğrusu, kurulumun kendisi iyi bir şekilde tamamlanacaktır, ancak daha sonra "git bir şey al" gibi herhangi bir git komutu bu "tanınmayan içe aktarma yolu" hatalarını verir.

Tek yapmam gereken önce bu direkleri kaldırmak, golangı yeniden kurmak ve tüm işler bir cazibe gibi çalışmaktı (GOPATH'ı da ayarladığınızı varsayarak)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools

Ayrıca kaldırmak zorunda kaldım/usr/local/go/
Natim

Ayrıca / usr / bin / go kaldırmak zorunda kaldı.
eatonphil

6

Çünkü GFW golang.org'a erişmenizi yasakladı! Ve proxy'yi kullandığımda iyi çalışabilir.

komut kullanarak bilgilere bakabilirsiniz go get -v -u golang.org/x/oauth2


1
Çin'de olduğum için tam olarak yaşadığım sorun bu. $ Http_proxy ayarladıktan sonra paketi hatasız kurabilirim.
ashen

1
Sadece engellenmekle kalmaz, aynı zamanda DNS de kirlenir. Önce http://ping.eu/nslookup/etki alanının doğru IP adresini bulmak için adresine gidin, bunu hosts dosyasına ayarlayın, ardından indirmek için bir proxy kullanın. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Bazen sadece
Gov'a

5

$ unset GOROOTbenim için çalıştı. Çoğu cevap GOROOT'unuzun geçersiz olduğunu öne sürüyor.


2

MacOS 10.10'da da aynı sorunu yaşadım. Ve OhMyZsh kabuğunun neden olduğu sorunun olduğunu buldum. Sonra her şey yolunda gitti.

İşte benim gidişatım

bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1

Bu go envişe yaramadığı zamandan mı yoksa işe yaradığından mı? Muhtemelen "[diğer kabuk] 'dan kaynaklanmıyordu, bunun yerine GOPATHdiğer kabukta doğru şekilde ayarlanamaması muhtemeldi . Kabuklarından csh ve zsh ailesi do not (hayır yani aynı başlangıç dosyalarını kullanabilirsiniz ~/.profile). Özellikle ve zshkullanımları ( varsayılan olduğu yerlerde ). $ZDOTDIR/.zshenv$ZDOTDIR/.zprofile$ZDOTDIR$HOME
Dave C

2

En yaygın nedenler şunlardır:
1. Yanlış yapılandırılmış GOROOT
VEYA
2. GOPATH ayarlanmamış


0

Go1.2'yi go1.4'e yükselttikten sonra da aynı sorunu yaşadım.

GOPATH'ımda src'yi _src olarak yeniden adlandırdım ve sonra go get -v

Çalıştı, sonra _src'yi sildim.

Umarım yardımcı olur.


0

Bu sorunla farklı bir paket kurarken karşılaştım ve bunun nedeni PATH'ınızdaki GOROOT ve GOPATH yapılandırması olabilir. GOROOT'u ayarlamama eğilimindeyim çünkü OS X kurulumum bunu benim için hallediyordu (inanıyorum).

  1. Profilinizde (veya profil yapılandırmasını sakladığınız her yerde: .bash_profile, .zshrc, .bashrc, vb.) Aşağıdakileri sağlayın:

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  2. Ayrıca, unset GOROOTbu yolun da yanlış olması durumunda, muhtemelen istersiniz .

  3. Ayrıca, GOPATH atamasından hemen önce aşağıda yaptığıma benzer şekilde PATH'inizi temizlediğinizden emin olun, yani:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  4. Ardından source <.profile>etkinleştirmek için

  5. yeniden dene go get
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.