.box
Vagrant 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 *.box
extensión, lo que explica por qué las búsquedas anteriores no pudieron localizarlo. Hay dos formas de recuperar el archivo de cuadro real:
Descargue el archivo .box de vagrantcloud.com
- Encuentra la caja que te interesa en el atlas . Por ejemplo,
https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
- 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 .
- Añadir
/providers/virtualbox.box
al 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
- Guarde el archivo .box
- Use el .box como desee, por ejemplo, alojándolo usted mismo y señalando
config.vm.box_url
la URL. O
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.
- 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
- Encuentra la función box_add. Dentro de
box_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
- Comenta este bloqueo.
- Agregue otro cuadro usando
vagrant add box <boxname>
.
- Espera a que se descargue. Puede verlo guardar en el
~/.vagrant.d/tmp/
directorio como unboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
archivo.
- 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.
sudo find / -name lucid32.box
.