¿Dónde descarga Vagrant sus archivos .box?

267

¿Qué sucede con el archivo .box después de ejecutar el siguiente comando?

vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

No puedo encontrar el lucid32.boxarchivo en el sistema de archivos después de que se haya completado la descarga.

Calvin Cheng
fuente
Creo que me estoy perdiendo completamente tu punto porque lo primero que me viene a la mente es sudo find / -name lucid32.box.
John irracional
exactamente lo que hice, pero debo estar perdiendo algo ya que no pude encontrar el lucid32.boxuso de este comando exacto ...
Calvin Cheng
3
Quizás no existe con ese nombre. Búsquedas comodín como tal *.boxvez? (Por cierto, ¿no sería la extensión .vbox?)
John irracional
Sí, tiene usted razón. La búsqueda debe ser para *.vboxy not *.box. Misterio resuelto. :-) ¿Desea escribir una respuesta para que pueda aceptarla? ¡Gracias!
Calvin Cheng
1
@CalvinCheng: Creo que te equivocas al ser solo una imagen .vbox en un archivo tar. De hecho, es un archivo tar, pero contiene archivos como box-disk1.vmdk, box.ovf y Vagrantfile. No sé exactamente cómo se usan para crear los archivos que usa VirtualBox, pero si abre el archivo .vbox de VB verá que es solo XML. Supongo que Vagrant transforma sus archivos (también un archivo binario y XML, más Vagrantfile) en los archivos XML y binarios utilizados por VirtualBox. Sin embargo, si abre los archivos binarios, verá que son diferentes, por lo que no se trata simplemente de desmarcar y renombrar.
iconoclasta

Respuestas:

397

Como se menciona en los documentos , las cajas se almacenan en:

  • Mac OS X y Linux: ~/.vagrant.d/boxes
  • Ventanas: C:/Users/USERNAME/.vagrant.d/boxes
manojlds
fuente
1
Ah Gracias por la aclaración. Debo estar ciego para haber perdido esa explicación en los documentos.
Calvin Cheng el
1
@manojlds: vea mi comentario sobre la pregunta sobre el archivo .vbox. No es la VM en sí misma, es solo un archivo XML.
iconoclasta
mismo lugar en el sistema operativo Windows?
Arruda
34
También puede usar la variable VAGRANT_HOME env para especificar la ubicación de .vagrant.d, como en VAGRANT_HOME = D: \. Vagrant.d (Sí, también funciona en Windows).
Sven
55
en las C:\Users\{username}\.vagrant.d\boxesventanas, ¡encontré solo el .vmdkarchivo, no el .box!!
Bilal
76

En el sistema Mac / Linux, los cuadros descargados con éxito se encuentran en:

~/.vagrant.d/boxes

y las cajas sin éxito se encuentran en:

~/.vagrant.d/tmp

En los sistemas Windows, se encuentra en la carpeta Usuarios:

C:\Users\%userprofile%\.vagrant.d\boxes

Espero que esto ayude. Gracias

Arbab Nazar
fuente
10
No estoy seguro de por qué esto fue rechazado. La información sobre el destino de las descargas fallidas fue útil.
Alex Coventry
~/.vagrant.d/boxesnunca almacena el archivo .box en sí, solo su contenido. ~/.vagrant/tmpse usa para almacenar el .box temporalmente durante la descarga, pero se elimina al instalarlo en Vagrant.
Luke Peterson
La tercera línea (para Windows) debería ser%userprofile%\.vagrant.d\boxes
J. Scott Elblein,
Esta respuesta es para el caso de que realmente le importe el espacio en su disco duro.
kiltek
45

Para cambiar la ruta, puede establecer una nueva ruta a una variable de entorno llamada: VAGRANT_HOME

export VAGRANT_HOME=my/new/path/goes/here/

Eso puede ser bueno si quieres tener esas imágenes vagabundas en otro HDD.

Más información aquí en Documentaciones: http://docs.vagrantup.com/v2/other/environmental-variables.html

suther
fuente
20

.boxVagrant elimina el archivo real una vez que se completa la descarga y la instalación de la caja. Como se menciona en otras respuestas, durante la descarga, el archivo .box se almacena como:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

donde el nombre del archivo es 'caja' seguido de un hash hexadecimal de 40 bytes. Un archivo temporal en mi sistema, por ejemplo, es:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

Por lo que puedo decir, este archivo nunca se guarda con una *.boxextensión, lo que explica por qué las búsquedas anteriores no pudieron localizarlo. Hay dos formas de recuperar el archivo de cuadro real:

  1. Descargue el archivo .box de vagrantcloud.com

    1. Encuentra la caja que te interesa en el atlas . Por ejemplo, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. Reemplace el nombre de dominio con vagrantcloud.com. Entonces https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 se convierte en https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
    3. Añadir /providers/virtualbox.boxal final de esa URL. Entonces https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 se convierte en https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. Guarde el archivo .box
    5. Use el .box como desee, por ejemplo, alojándolo usted mismo y señalando config.vm.box_urlla URL. O
  2. Obtenga el .box directamente de Vagrant

    Esto requiere que modifique la fuente de ruby ​​para evitar que Vagrant elimine el cuadro después de una descarga exitosa.

    1. Localice el archivo box_add.rb en su directorio de instalación de Vagrant. En mi sistema está ubicado en/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. Encuentra la función box_add. Dentro debox_add función, hay un bloque que lee:

      asegúrese de # Asegúrese de eliminar el archivo temporal después de que lo agreguemos, # a menos que se interrumpa, en cuyo caso lo mantenemos cerca # para que podamos reanudar la descarga más tarde. if! @download_interrupted @ logger.debug ("Eliminando el cuadro temporal: # {box_url}") comienza box_url.delete if box_url rescue Errno :: ENOENT # No es gran cosa, el archivo temporal puede no existir realmente end end

    3. Comenta este bloqueo.
    4. Agregue otro cuadro usando vagrant add box <boxname> .
    5. Espera a que se descargue. Puede verlo guardar en el ~/.vagrant.d/tmp/directorio como unboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX archivo.
    6. Cambie el nombre del archivo a algo más útil. Ej mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box.

Por qué querrías esto?

Para mí, esto ha sido útil para recuperar el archivo .box para que pueda alojarse en una infraestructura local y rápida en lugar de descargarlo del catálogo de cajas Atlas de HashiCorp u otro proveedor de cajas .

Esto realmente debería ser parte de la funcionalidad predeterminada de Vagrant, ya que tiene un caso de uso muy definitivo.

Luke Peterson
fuente
¿Es posible dar me gusta, comprimir o alquitragar las subcarpetas en la carpeta de cajas para crear un archivo de caja instalable?
ThorSummoner
@ThorSummoner Sí, pero también puede dejar que Vagrant lo maneje en ese caso, por ejemplo, a través del vagrant packagecomando: docs.vagrantup.com/v2/cli/package.html .
Luke Peterson
15

@Luke Peterson: Hay una forma más sencilla de obtener el archivo .box.

Simplemente vaya a https://atlas.hashicorp.com/boxes/search , busque el cuadro que desea descargar. Observe la URL del cuadro, por ejemplo:

https://atlas.hashicorp.com/ ubuntu / boxes / trusty64 / version / 20150530.0.1

Luego puede descargar este cuadro usando una URL como esta:

https://vagrantcloud.com/ ubuntu / boxes / trusty64 / version / 20150530.0.1 /providers/virtualbox.box

Intenté y descargué con éxito todos los cuadros que necesito. Espero que te sirva de ayuda.

Hiep Ho
fuente
¡Este es un gran hallazgo! Gracias. ;)
Luke Peterson
El enlace ahora está roto; debe reemplazarse por: app.vagrantup.com .
RtmY
6

En Windows, la ubicación se puede encontrar aquí. No encontré ninguna documentación en Internet para esto, y esto no fue inmediatamente obvio para mí:

C:\Users\\{username}\\.vagrant.d\boxes

Mark Liu
fuente
¿Funciona entonces% userprofile% \. Vagrant.d \ boxes? % userprofile% se expande a c: \ users \ {username}
TamusJRoyce
2

Además de

Mac:
~/.vagrant.d/

Windows:
C:\Users\%userprofile%\.vagrant.d\boxes

Debe eliminar los archivos en VirtualBox / OtherVMprovider para comenzar de cero.

Punnerud
fuente
0

En Windows 10 con Vagrant 2.2.2 , la configuración de la variable de entorno VAGRANT_HOMEgarantizará que los cuadros se descarguen en una subcarpeta de la carpeta especificada paraVAGRANT_HOME .

En mi caso me puse VAGRANT_HOMEa e:\vagrant_home, y las cajas se almacenan bajoe:\vagrant_home\boxes .

Esto funciona para mi.

Ahí es donde se almacenan las cajas . Las máquinas virtuales se están creando en la carpeta configurada en Virtual Box. Para establecer la carpeta de almacenamiento de VM VirtualBox, vaya a: VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

usuario577736
fuente