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 .
go install
instala paquetes, no archivos individuales. Lea todo en golang.org/cmd/go y vea cómo configurar sus archivos.