¿Cómo puedo instalar un paquete con go get?

132

Quiero instalar paquetes de github a mi gopath, he intentado esto:

go get github.com:capotej/groupcache-db-experiment.git

El repositorio está aquí .

Roger
fuente
44
Si tiene un error con este comando, elimine .gital final de la línea:go get github.com:capotej/groupcache-db-experiment
Benyamin Jafari

Respuestas:

120

Comando ir

Descargue e instale paquetes y dependencias

Uso:

go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

Obtenga descargas de los paquetes nombrados por las rutas de importación, junto con sus dependencias. Luego instala los paquetes nombrados, como 'ir a instalar'.

El indicador -d indica que se detenga después de descargar los paquetes; es decir, le indica a get que no instale los paquetes.

El indicador -f, válido solo cuando se establece -u, obliga a get -u a no verificar que cada paquete se haya extraído del repositorio de control de origen implícito en su ruta de importación. Esto puede ser útil si la fuente es una bifurcación local del original.

El indicador -fix indica a ejecutar la herramienta de reparación en los paquetes descargados antes de resolver dependencias o construir el código.

El indicador -insecure permite buscar desde repositorios y resolver dominios personalizados utilizando esquemas inseguros como HTTP. Usar con precaución.

El indicador -t indica que también se descarguen los paquetes necesarios para construir las pruebas para los paquetes especificados.

El indicador -u le indica a usar la red para actualizar los paquetes nombrados y sus dependencias. De manera predeterminada, get usa la red para verificar los paquetes faltantes, pero no la usa para buscar actualizaciones de los paquetes existentes.

El indicador -v habilita el progreso detallado y la salida de depuración.

Get también acepta indicadores de compilación para controlar la instalación. Ver 'ir a construir ayuda'.

Al retirar un nuevo paquete, get crea el directorio de destino GOPATH / src /. Si GOPATH contiene varias entradas, get usa la primera. Para más detalles ver: 'go help gopath'.

Al retirar o actualizar un paquete, busque una rama o etiqueta que coincida con la versión de Go instalada localmente. La regla más importante es que si la instalación local está ejecutando la versión "go1", busque una rama o etiqueta llamada "go1". Si no existe tal versión, recupera la rama predeterminada del paquete.

Cuando sale y actualiza un repositorio de Git, también actualiza los submódulos de git a los que hace referencia el repositorio.

Get nunca extrae o actualiza el código almacenado en los directorios de proveedores.

Para obtener más información sobre cómo especificar paquetes, consulte 'Ir a paquetes de ayuda'.

Para obtener más información sobre cómo 'go get' encuentra el código fuente para descargar, consulte 'go help importpath'.

Este texto describe el comportamiento de get cuando se usa GOPATH para administrar el código fuente y las dependencias. Si, en cambio, el comando go se ejecuta en modo compatible con el módulo, los detalles de los indicadores y efectos de get cambian, al igual que 'go help get'. Consulte 'módulos de ayuda go' y 'módulo de ayuda go-get'.

Vea también: vaya a construir, vaya a instalar, vaya a limpiar.


Por ejemplo, mostrando resultados detallados,

$ go get -v github.com/capotej/groupcache-db-experiment/...
github.com/capotej/groupcache-db-experiment (download)
github.com/golang/groupcache (download)
github.com/golang/protobuf (download)
github.com/capotej/groupcache-db-experiment/api
github.com/capotej/groupcache-db-experiment/client
github.com/capotej/groupcache-db-experiment/slowdb
github.com/golang/groupcache/consistenthash
github.com/golang/protobuf/proto
github.com/golang/groupcache/lru
github.com/capotej/groupcache-db-experiment/dbserver
github.com/capotej/groupcache-db-experiment/cli
github.com/golang/groupcache/singleflight
github.com/golang/groupcache/groupcachepb
github.com/golang/groupcache
github.com/capotej/groupcache-db-experiment/frontend
$ 
PeterSO
fuente
17
Si esto ayuda a alguien, la solución a mi problema ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) fue eliminar el .gitsufijo de la URL de Github.
Excalibur
66
¿qué -vhacer?
yu yang Jian
3
@yuyangJian significa salida detallada.
omrsin
3
encanta cómo -vno se hace referencia al comando en esa lista lol fml ... seguramente significa verbosa aunque
Alexander Mills
2
¿Cómo lo ejecutas una vez que lo has usado go get?
acjay
75

Primero, necesitamos GOPATH

El $GOPATHes una carpeta (o conjunto de carpetas) especificada por su variable de entorno. Debemos notar que este no es el $GOROOTdirectorio donde está instalado Go.

export GOPATH=$HOME/gocode
export PATH=$PATH:$GOPATH/bin

Utilizamos la ~/gocoderuta en nuestra computadora para almacenar la fuente de nuestra aplicación y sus dependencias. El GOPATHdirectorio también almacenará los binarios de sus paquetes.

Luego marca Go env

Su sistema debe tener $GOPATHy $GOROOT, a continuación está mi Env:

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/elpsstu/gocode"
GORACE=""
GOROOT="/home/pravin/go"
GOTOOLDIR="/home/pravin/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

Ahora, ejecuta el paquete download go:

go get [-d] [-f] [-fix] [-t] [-u] [build flags] [packages]

Obtenga descargas e instala los paquetes nombrados por las rutas de importación, junto con sus dependencias. Para más detalles puedes mirar aquí .

Pravin Mishra
fuente
1
mi entorno de marcha ya ha estado bien, pero no estoy familiarizado con las reglas de go get, así github.com:capotej/groupcache-db-experiment.gitque no es ilegal, ¿cuál es el camino legal?
Roger
2
Intenta obtener -v github.com/capotej/groupcache-db-experiment / ... como dijo @peterSO
Pravin Mishra
1
A partir de Go v1.8, el valor GOPATHpredeterminado es $HOME/gosi no está configurado. Fuente 1 , 2 .
Manavalan Gajapathy