Después de jugar con la go
herramienta por un tiempo, parece quego get
:
- (opcionalmente) descargas,
- compila,
- e instala
una pieza de software, mientras que go install
simplemente
- compila
- e instala
eso. En este caso, ¿por qué existe el go install
comando, ya que lo go get
reemplaza?
go get ./path/to/local_package
, y se comportaría igual que si lo usarago install ./path/to/local_package
, ¿verdad? Dado que no hay proceso de descarga en este caso.go install
hace que su objetivo sea más explícito, pero supongo que ambos lograrían lo mismo. Probé con algunos paquetes, incluidos los declarados comomain
y parecían equivalentes. Los documentos son muy deficientes en este comando.go get
pero no parago install
. ¿Cómo se relaciona eso con esta descripción?go get
lugar dego install
en su tercer punto, yago get
que no volverá a descargar la biblioteca (a menos que agregue-u
). También puede utilizarlogo get
al escribir una biblioteca desde cero.go install
parece completamente redundante.go get
hace dos cosas principales en este orden:descarga y guarda en
$GOPATH/src/<import-path>
los paquetes (código fuente) nombrados en las rutas de importación, junto con sus dependencias, luegoejecuta un
go install
La
-d
bandera (go get -d
) indicago get
que se detenga después de descargar los paquetes; es decir, instruye ago get
no hacergo install
la diferencia:
go get
// verificar si los paquetes necesitan ser descargados, descargarlos si es necesario y luego compilarlosgo install
// omita la parte con la descarga de paquetes, solo compile (esto arrojará un error si falta algún paquete)sobre
GOPATH
la variable de entornoLas
GOPATH
herramientas de Go utilizan la variable de entorno. Se debe establecer con el fin de ser capaz deget
,build
yinstall
paquetes, y especifica la ubicación de su espacio de trabajo. Es probable que sea la única variable de entorno que necesitará establecer al desarrollar código Go.De nuevo, el
GOPATH
no debe apuntar a la instalación de Go, sino a su espacio de trabajo.Por ejemplo, en Windows, si decide que su espacio de trabajo está en
c:\gowork\
, deberá establecer elGOPATH
valor comoc:\gowork
Su código fuente debe estar en
c:\gowork\src\<some project folder>\
y después de ejecutarlogo get
en el símbolo del sistema desde dentroc:\gowork\src\<some project folder>\
, verác:\gowork\bin\
y sec:\gowork\pkg\
está creando.fuente
go install
descarga el paquete en una configuración compatible con módulos.Tenga en cuenta que la versión 1.16 (Q1 2021) hará que esa diferencia sea más clara, implementada con CL 266360 como parte del problema 40276 :
fuente