„Nierozpoznana ścieżka importu” za pomocą go get

93

Próbuję zainstalować web.go, ale działago get github.com/hoisie/web zwraca

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"

i to trwa przez chwilę z różnymi pakietami, zanim nie zwrócą niczego innego. go envdaje mi:

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"

Jak mogę zainstalować web.go? Używanie go get(zamiast go install) znajduje się w README na stronie github. Moja wersja Go to go version go1.2 linux/amd64.

q3d
źródło
3
Wyeksportowano GOROOT, ale nie ma GOPATH? GOROOT różni się od GOBIN? Jak zainstalowałeś Go? Jak skonfigurowałeś swoje środowisko?
Volker,
Zainstalowałem go, postępując zgodnie ze stroną golang.org/doc/install . Nie byłem pewien, co postawić na GOPATH.
kwartał

Odpowiedzi:

102

Problemy dotyczą osoby niepełnosprawnej GOROOT .

Myślę, że zainstalowałeś Wejdź /usr/local/go.
Więc zmień swoją GOROOTścieżkę do wartości /usr/local/go/bin.

Wygląda na to, że chciałeś mieć swój obszar roboczy (GOPATH) znajdujący się pod adresem /home/me/go .

To może rozwiązać twój problem.
Dodaj to na dole swojego profilu bash, znajdującego się tutaj =>$HOME/.profile

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

Pamiętaj, aby usunąć stare odniesienia do GOROOT.

Następnie spróbuj ponownie zainstalować web.go.

Jeśli to nie zadziała, zainstaluj Ubuntu Go dla siebie.

sudo apt-get install golang

Samouczek wideo: http://www.youtube.com/watch?v=2PATwIfO5ag

Larry Battle
źródło
16
Prawie nigdy nie powinieneś ustawiać GOROOT. Twoja deklaracja PATH nie trafia do / usr / local / go / bin. Należy również zauważyć, że pakiety ubuntu są nieco w tyle za oficjalnym wydaniem, czyli 1.2.
JimB
2
Kiedy postępowałem zgodnie z instrukcjami instalacji go z oficjalnej strony (instalacja z pliku tar do / usr / local) otrzymałem powyższy błąd, dopóki nie zmieniłem GOROOT jak powyżej.
Drew
1
Właśnie zainstalowałem świeżego golanga 1.3 na Fedorze 20 i go getdaje ten sam błąd. GOROOTjest ustawiony na /usr, przejdź się do / usr, a nie / usr / local. Ustaw GOPATHna $HOME/go. Masz pomysł, co jeszcze sprawdzić?
Dfr
15
Odpowiadając sobie: niepokój GOROOTwydaje się rozwiązany.
Dfr
5
+1 za nie ustawianie GOROOT. Rozbroiłem go, upewniłem się, że nie jest ustawiony, a echo $GOROOTnastępnie sprawdziłem, czy GO nadal ma go w środowisku, z go envktórym to zrobił i jest w /usr/local/gomiejscu, w którym zainstalowałem (więc nie ma potrzeby ustawiania go w żadnym wypadku)
StartupGuy
37

Zainstalowałem Go z brewna OSX 10.11 i stwierdziłem, że muszę ustawić GOROOT:

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

(Oczywiście zastąp wersję w tej ścieżce wersją go, którą posiadasz)

Brew używa linków symbolicznych, które oszukiwały gotoola. Więc skorzystaj z linków do domu.

Eric
źródło
Ach, w końcu znalazłem coś, co zadziałało. Dzięki Eric!
Mir Adnan
Przydatne, dzięki ~
Kao-Yuan Lin
23

Miałem dokładnie ten sam problem, po przejściu ze starej wersji go (zainstalowanej ze starego PPA) na nowsze (1.2.1) domyślne pakiety w Ubuntu 14.04.

Pierwszym krokiem było usunięcie istniejącego go:

sudo apt-get purge golang*

Który generuje następujące ostrzeżenia:

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

Wygląda na to, że usunięcie go powoduje pozostawienie niektórych plików, co z kolei może zmylić nowszą instalację. Dokładniej, sama instalacja zakończy się dobrze, ale później każde polecenie go, takie jak „go get something”, powoduje wyświetlenie błędów „nierozpoznanej ścieżki importu”.

Wszystko, co musiałem zrobić, to najpierw usunąć te katalogi, ponownie zainstalować golanga i wszystko działa jak urok (zakładając, że ustawiłeś również GOPATH)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools
jareks
źródło
Musiałem też usunąć/usr/local/go/
Natim
Musiał również usunąć / usr / bin / go.
eatonphil
6

Ponieważ GFW zabronił ci dostępu do golang.org! A kiedy używam proxy, może działać dobrze.

możesz spojrzeć na informacje za pomocą polecenia go get -v -u golang.org/x/oauth2

jefby
źródło
1
To jest dokładnie problem, który mam, ponieważ jestem w Chinach. Po ustawieniu $ http_proxy mogę zainstalować pakiet bez błędów.
popielaty
1
Nie tylko zablokowany, ale także DNS jest zanieczyszczony. Najpierw przejdź do, http://ping.eu/nslookup/aby znaleźć poprawny adres IP domeny, ustaw go w pliku hosts, a następnie użyj serwera proxy do pobrania. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Czasami chcesz po prostu powiedzieć słowo na F do
rządu
4

$ unset GOROOTpracował dla mnie. Jak wynika z większości odpowiedzi, Twój GOROOT jest nieprawidłowy.

noelmcloughlin
źródło
2

Miałem ten sam problem na MacOS 10.10. I znalazłem, że problem spowodowany jest przez powłokę OhMyZsh. Potem wróciłem do bash, wszystko poszło dobrze.

Oto moja strona go env

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
Igor Barinov
źródło
Czy to go envod kiedy to nie działało, czy kiedy działało? Prawdopodobnie nie był to „spowodowany przez [inną powłokę]”, raczej był to błąd prawidłowego ustawienia GOPATHw tej innej powłoce. Rodziny powłok csh i zsh nie używają tych samych plików startowych (tzn. Nie ~/.profile). W szczególności zshzastosowania $ZDOTDIR/.zshenvi $ZDOTDIR/.zprofile(gdzie $ZDOTDIRdomyślnie $HOME).
Dave C
1

Najczęstsze przyczyny to:
1. Nieprawidłowo skonfigurowany GOROOT
LUB
2. GOPATH nie jest ustawiony

Clyde D'Cruz
źródło
0

Miałem ten sam problem po uaktualnieniu go1.2 do go1.4.

Zmieniłem nazwę src na _src w moim GOPATH, a następnie wykonałem plik go get -v

Zadziałało, a potem usunąłem _src.

Mam nadzieję, że to pomoże.

Erol
źródło
0

Napotkałem ten problem podczas instalowania innego pakietu i może to być spowodowane konfiguracją GOROOT i GOPATH na twojej ścieżce PATH. Zwykle nie ustawiam GOROOT, ponieważ moja instalacja OS X załatwiła to (wierzę) za mnie.

  1. Upewnij się, że w pliku .profile (lub gdziekolwiek przechowujesz konfigurację profilu: .bash_profile, .zshrc, .bashrc itp.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  2. Prawdopodobnie też zechcesz unset GOROOT, jeśli ta ścieżka również jest nieprawidłowa.

  3. Ponadto pamiętaj, aby wyczyścić swoją ścieżkę PATH, podobnie jak to zrobiłem poniżej, tuż przed przypisaniem GOPATH, tj .:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  4. Następnie, source <.profile>aby aktywować

  5. spróbować ponownie go get
ThatsAMorais
źródło