Estoy intentando instalar mi paquete personalizado para mi archivo main.go. Sin embargo, cuando corrí
go install custom.go
Tengo este error
go install: no install location for .go files listed on command line (GOBIN not set)
¿Cómo configuro GOBIN?
go install
instala paquetes, no archivos individuales. Lea todo en golang.org/cmd/go y vea cómo configurar sus archivos.Respuestas:
Actualización 2020: desde Go 1.11 y la introducción de los módulos Go ,
GOPATH
ya no es necesario por proyecto, y está predeterminado~/go
para las herramientas / proyectos globales que necesitaríago get
.Ir 1,16 (Q1 2020) en caso de incumplimiento
GOBIN
aGOPATH[0]/bin
.Pero por ahora, para cualquier proyecto que utilice módulos, ya no tendrá un mensaje de error como "
go install: no install location ...
".Respuesta original 2014:
Comprueba tu
GOPATH
variable.Asegurarse:
bin
carpeta dentro de tu carpeta GOPATH.Consulte la variable de entorno GOPATH (donde 'DIR' es una
GOPATH
carpeta):Por ejemplo, este hilo ilustra lo que sucede en el caso de que se realice una compilación de go fuera de
GOPATH/src
:Ver Ir a construir
Si lo ha hecho
go build
, también puede probar ungo install
(nocustom.go
): desea instalar el paquete, no un solo archivo.fuente
Establecí el camino de GOBIN y eso funcionó para mí.
fuente
cannot install, GOBIN must be an absolute path
:(..
o~
en la ruta que especificó? Recibí ese error y simplemente cambié a una ruta absoluta como/home/ben/bin/
o incluso$HOME/bin/
. Mi comando completo fue (en concha, vaya a v1.11)env GOBIN=$HOME/bin/ go install testfile.go
.Como principiante, encontré este error cuando estaba probando varios comandos go (compilar, ejecutar e instalar). En resumen, no puede instalar un filename.go . Solo puede instalar un paquete.
Esto fue confuso, porque había aprendido que:
nate:~/work/src/dir $ go run hello/hello.go hello, world.
Funciona genial. Pero no pude entender por qué la instalación no funcionaría:
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)
No importa en qué directorio estaba:
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)
Esta confusión se debe a que go run solo funciona con archivos fuente de Go (nombres de archivo que terminan en .go) y go install solo acepta paquetes. Los paquetes se nombran por sus rutas de importación o la ruta del sistema de archivos. Así:
nate:~/work/src/dir $ go install dir/hello nate:~/work/src/dir $ go install ./hello/ nate:~/work/src/dir/hello $ go install .
todo funciona muy bien. El primero se refiere al paquete por ruta de importación, (dado que $ GOPATH = "/ home / nate / work", las herramientas go buscan el código fuente en / home / nate / work / src), los demás se interpretan como sistema de archivos caminos debido a los períodos principales.
Consulte también los documentos de GOPATH .
fuente
go install
funciona en directorios y si especifica un archivo go en particular, puede causar este problema en particular.En realidad, hay 2 tipos diferentes de comportamiento.
go install <package>
esto está documentado en Compilar e instalar paquetes y dependencias . No necesita GOBIN si configura GOPATH correctamente.
go install <gofile>
esto no está documentado y necesita la variable env GOBIN en este modo.
fuente
go install <gofile>
está documentado, en elgo help packages
que sego install --help
refiere. El problema es quego install
(en 1.9.2 y anteriores) tiene un comportamiento inconsistente, en un caso requiere y en otro no requiere que GOBIN se establezca explícitamente.Como señalaron las respuestas anteriores, si su env GOPATH está configurado correctamente en su espacio de trabajo, no necesita configurar la variable env GOBIN.
Compruebe sus variables de entorno go ejecutando $ go env | grep -i "^ GO" y busque GOROOT y GOPATH para comprobar si GOROOT está apuntando a su instalación de fuente GO y GOPATH apuntando a su espacio de trabajo.
Si todo está correcto, navegue hasta el subdirectorio donde reside yourpkg.go, luego ejecute $ go build (sin nombre de archivo) primero y $ go install (nuevamente sin su nombre de archivo) en segundo lugar, si no ve ningún mensaje de error en la pantalla su el paquete está listo en su espacio de trabajo / pkg / youros /../ yourpackage.a
fuente
En Windows con cygwin, parece una buena idea configurar GOBIN en $ GOPATH / bin.
y recuerde escapar correctamente del separador de nombre de archivo de Windows:
fuente
Para el
*nix
sistema, mire dóndego
está instalado, ejecutando el siguiente comando:$ which go
qué salida digamos:
/usr/local/go/bin/go
luego agregue las siguientes entradas en
~/.bash_profile
o en~/.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
PD: no te olvides de la fuente
~/.bash_profile
o~/.zshrc
, de la siguiente manera:fuente
/usr/local/go/bin
?Con respecto a la configuración de la
GOBIN
versión de la variable, no la requiere y solo se basa enGOPATH
:GOBIN
es necesario si no tenemos un paquete, es decir, el archivo está directamente en elGOPATH
directorio. Esto es probable cuando estamos probando las funciones de Go como estudiantesPara proyectos típicos de Go, los archivos se encuentran en los directorios del paquete. Para estos,
GOPATH
es suficiente.En otras palabras, las dos soluciones siguientes funcionarían: a. Establecer
GOBIN
explícitamente como $ GOPATH / bin [solo con fines de aprendizaje, se puede evitar] b. Cree un subdirectorio que sería el nombre de su paquete y mueva los archivos .go a élSupongo que las utilidades Go deberían eliminar el error anterior y manejar mejor el escenario, según si el argumento es un directorio o un archivo fuente
fuente
Para usuarios de WINDOWS
Abra un símbolo del sistema (
Win
+r
luego escribacmd
) o una ventana de PowerShell (Win
+x
luego escribai
).Configuración de GOPATH
go env -w GOPATH=c:\your-go-work
Más detalles en el enlace a continuación https://github.com/golang/go/wiki/SettingGOPATH#windows
Configuración de GOBIN
go env -w GOBIN=C:\somewhere\else\bin
Recomiendo comprobar el ejemplo de código proporcionado por golang. Me ayudó un montón. https://golang.org/doc/code.html#Command
fuente
En Windows:
go env -w GOBIN=C:\Users\yourname\go\bin
Confirme con el
go env
comando que GOBIN está configurado, luego elgo install
comando guarda correctamente el ejecutable en el directorio bin.fuente
Yo también tuve el mismo problema (no es necesario configurar GOBIN por separado), asegúrese de tener lo siguiente
go install <your_module>
fuente
No necesita $ GOBIN si ha configurado un $ GOPATH correctamente. Si es así, simplemente vuelva a verificar si su proyecto reside en la carpeta $ GOPATH / src .
fuente
De https://golang.org/cmd/go/#hdr-Environment_variables :
y https://golang.org/cmd/go/#hdr-GOPATH_environment_variable :
y https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more
Por lo tanto, parece que básicamente puede usar GOBIN para anular temporal o permanentemente la ubicación de instalación binaria predeterminada (es decir
$GOPATH/bin
). Tuve éxito al instalar un "script" de 1 archivo usandoenv GOBIN=$HOME/bin/ go install testfile.go
. Esto se hizo usando go v1.11.fuente
Tratar
export GOROOT=""
export PATH=$PATH:$GOROOT/bin
fuente