installing - install go centos
"Go build" se volvió muy lento después de instalar una nueva versión de Go (7)
Acabo de experimentar el mismo problema: actualizar de 1.4 a 1.5. Parece que las versiones antiguas son de alguna manera incompatibles o se están reconstruyendo cada vez que go build -x
muestra go build -x
. Ejecutar go get -v
invalida todos los paquetes o los vuelve a poner, no estoy muy seguro y go build -x
muestra bastante menos salida.
Después de la actualización de Go 1.2.1 a 1.3 (Windows 7 de 64 bits), el tiempo de ejecución "go build" ha aumentado de alrededor de 4 a más de 45 segundos. No hubo otros cambios, excepto la actualización de la versión go. Apagar el escáner de virus parece no tener ningún efecto. ¿Alguna pista?
Después de ir 1.10, solo necesitarás escribir go build
. No necesitarías escribir: go build -i
.
Del borrador del documento Go 1.10, here .
Construye e instala
El comando go build ahora detecta paquetes desactualizados basados puramente en el contenido de los archivos fuente, las marcas de construcción especificadas y los metadatos almacenados en los paquetes compilados. Los tiempos de modificación ya no son consultados o relevantes. El consejo anterior de agregar -a para forzar una reconstrucción en casos donde los tiempos de modificación eran engañosos por una razón u otra (por ejemplo, cambios en indicadores de compilación) ya no es necesario : las compilaciones ahora siempre detectan cuándo deben reconstruirse los paquetes. (Si observa lo contrario, presente un error).
...
El comando go build ahora mantiene un caché de paquetes construidos recientemente, separados de los paquetes instalados en $ GOROOT / pkg o $ GOPATH / pkg. El efecto de la memoria caché debe ser acelerar compilaciones que no instalen explícitamente paquetes o al cambiar entre diferentes copias del código fuente (por ejemplo, al cambiar de una rama a otra en un sistema de control de versiones). El consejo anterior de agregar el indicador -i para la velocidad, como en go build -i o go test -i, ya no es necesario: las compilaciones se ejecutan igual de rápido sin -i. Para obtener más detalles, vea ir a la memoria caché de ayuda.
Puedes construir sqlite3 así:
cd ./vendor/github.com/mattn/go-sqlite3/
go install
Después de eso, tu proyecto se construirá mucho más rápido.
Si prueba como todos los demás dijeron pero todavía no funcionan, sugiero eliminar el directorio de $GOPATH
, como:
sudo rm -rf $GOPATH
cd yourproject
go get -d
go get -u -v github.com/mattn/go-sqlite3
Tengo exactamente el mismo problema, ejecutar este comando lo resuelve:
go get -u -v github.com/mattn/go-sqlite3
Otro consejo: http://kokizzu.blogspot.co.id/2016/06/solution-for-golang-slow-compile.html
Usando go1.6,
Simplemente ejecuta go build -i
.
Recopilará todas las dependencias y las almacenará en $GOPATH/pkg/*/*
como archivos .a .
Más tarde, cuando corres, go run main.go
, todo es mucho más rápido.
Lo que es realmente genial es que si usa dependencias con derechos de autor (es decir, una carpeta de proveedor en su proyecto), los deps se crean apropiadamente dentro de $GOPATH/pkg/**/yourproject/vendor/**
Por lo tanto, no tiene que go get install/get/whatever
y tener una combinación de proveedores / dependencias globales.
Sospecho que tienes que volver a compilar .a archivos después de la actualización de deps (actualización de planeo o smthg como este), pero aún no lo he probado.
Es probable que tenga dependencias que se vuelven a compilar cada vez. Pruebe go install -a mypackage
para reconstruir todas las dependencias.
La eliminación de $GOPATH/pkg
también ayuda a garantizar que no tenga archivos antiguos de objetos.
Construir con la bandera -x
le mostrará si la cadena de herramientas encuentra versiones incompatibles.