"Ruta de importación no reconocida" con go get

93

Estoy intentando instalar un web.go, pero la ejecución go get github.com/hoisie/webdevuelve

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"

y esto continúa por un tiempo con varios paquetes, antes de devolver nada más. go envme da:

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"

¿Cómo puedo instalar web.go? Usar go get(en lugar de go install) es lo que está en el README en la página de github. Mi versión Go es go version go1.2 linux/amd64.

q3d
fuente
3
¿Exportó GOROOT pero no GOPATH? ¿GOROOT se diferencia de GOBIN? ¿Cómo instalaste Go? ¿Cómo configuró su entorno?
Volker
Lo instalé siguiendo la página golang.org/doc/install . No estaba seguro de qué poner para GOPATH.
tercer trimestre del

Respuestas:

102

Los problemas están relacionados con un inválido GOROOT.

Creo que instalaste Go in /usr/local/go.
Así que cambia tu GOROOTruta al valor de /usr/local/go/bin.

Parece que pretendías tener tu espacio de trabajo (GOPATH) ubicado en /home/me/go.

Esto podría solucionar su problema.
Agregue esto al final de su perfil de bash, ubicado aquí =>$HOME/.profile

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

Asegúrese de eliminar las referencias antiguas de GOROOT.

Luego intente instalar web.go nuevamente.

Si eso no funciona, entonces haga que Ubuntu instale Go por usted.

sudo apt-get install golang

Video tutorial: http://www.youtube.com/watch?v=2PATwIfO5ag

Larry Battle
fuente
15
Casi nunca debería configurar GOROOT. Su declaración PATH no llega a / usr / local / go / bin. Además, debe tener en cuenta que los paquetes de ubuntu están un poco atrasados ​​con respecto al lanzamiento oficial, que es 1.2.
JimB
2
Cuando seguí las instrucciones de instalación de go del sitio oficial (instalar desde el archivo tar en / usr / local) recibí el error anterior hasta que cambié el GOROOT como se indicó anteriormente.
Drew
1
Acabo de instalar golang 1.3 nuevo en fedora 20 y go getda el mismo error. GOROOTestá configurado en /usr, ir instalado en / usr, no en / usr / local. Establecer GOPATHen $HOME/go. ¿Alguna idea de qué más comprobar?
Dfr
15
Respondiendo a mí mismo: GOROOTparece que el problema se solucionó.
Dfr
4
+1 por no configurar GOROOT. Lo desactivé, me aseguré de que no lo estaba y echo $GOROOTluego verifiqué que GO todavía lo tenía en el entorno con el go envque lo tenía y estaba /usr/local/godonde lo tenía instalado (por lo tanto, no es necesario configurarlo en ningún caso)
StartupGuy
36

Instalé Go with brewen OSX 10.11 y descubrí que tenía que configurarlo GOROOTen:

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

(Por supuesto, reemplace la versión en esta ruta con la versión go que tiene)

Brew usa enlaces simbólicos, que engañaban al gotool. Así que sigue los enlaces a casa.

Eric
fuente
Ah, finalmente encontré algo que funcionó. ¡Gracias Eric!
Mir Adnan
23

Tuve exactamente el mismo problema, después de pasar de la versión anterior de Go (instalada desde el PPA anterior) a los paquetes predeterminados más nuevos (1.2.1) en ubuntu 14.04.

El primer paso fue purgar el go existente:

sudo apt-get purge golang*

Que emite las siguientes advertencias:

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

Parece que la eliminación de go deja algunos archivos atrás, lo que a su vez puede confundir la instalación más reciente. Más precisamente, la instalación en sí se completará bien, pero luego cualquier comando go, como "ir a buscar algo" da esos errores de "ruta de importación no reconocida".

Todo lo que tenía que hacer era eliminar esos directorios primero, reinstalar golang y todo funciona como un encanto (suponiendo que también establezca GOPATH)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools
jareks
fuente
También tuve que eliminar/usr/local/go/
Natim
También tuve que eliminar / usr / bin / go.
Eatonphil
6

¡Porque GFW te prohibió acceder a golang.org! Y cuando uso el proxy, puede funcionar bien.

puedes mirar la información usando el comando go get -v -u golang.org/x/oauth2

jefby
fuente
1
Este es exactamente el problema que tengo porque estoy en China. Después de configurar $ http_proxy, puedo instalar el paquete sin errores.
ceniciento
1
No solo está bloqueado, sino que también el DNS está contaminado. Primero vaya a http://ping.eu/nslookup/para encontrar la IP correcta del dominio, configúrelo en el archivo de hosts y luego use un proxy para descargar. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 A veces solo quieres decirle la palabra F al gobernador
señor Wang de Next Door
4

$ unset GOROOTtrabajó para mi. Como la mayoría de las respuestas sugieren, su GOROOT no es válido.

Noelmcloughlin
fuente
2

Tuve el mismo problema en MacOS 10.10. Y descubrí que el problema causado por OhMyZsh shell. Luego cambié de nuevo a bash, todo salió bien.

Aquí está mi 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
fuente
¿Es go envde cuando no funcionó o cuando funcionó? Probablemente no fue "causado por [otro shell]", sino que probablemente fue una falla al establecer correctamente GOPATHen ese otro shell. Las familias de shells csh y zsh no usan los mismos archivos de inicio (es decir, no ~/.profile). En zshusos particulares $ZDOTDIR/.zshenvy $ZDOTDIR/.zprofile(donde por $ZDOTDIRdefecto $HOME).
Dave C
1

Las causas más comunes son:
1. Un GOROOT
OR configurado incorrectamente
2. GOPATH no está configurado

Clyde D'Cruz
fuente
0

Tuve el mismo problema después de haber actualizado go1.2 a go1.4.

Cambié el nombre de src a _src en mi GOPATH y luego hice un go get -v

Funcionó, luego eliminé _src.

Espero eso ayude.

Erol
fuente
0

Encontré este problema al instalar un paquete diferente, y podría ser causado por la configuración de GOROOT y GOPATH en su PATH. Tiendo a no configurar GOROOT porque mi instalación de OS X lo manejó (creo) por mí.

  1. Asegúrese de lo siguiente en su .profile (o donde sea que almacene la configuración del perfil: .bash_profile, .zshrc, .bashrc, etc.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. Además, es probable que también desee hacerlo unset GOROOT, en caso de que esa ruta también sea incorrecta.

  3. Además, asegúrese de limpiar su PATH, de manera similar a lo que hice a continuación, justo antes de la asignación de GOPATH, es decir:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. Entonces, source <.profile>para activar

  5. rever go get
Eso es AMorais
fuente