¡Es posible que haya descargado varias versiones de las cajas de Vagrant y algunas de ellas pueden estar bastante desactualizadas! Si ya no son necesarios, puede eliminar de forma segura los cuadros de Vagrant obsoletos en Linux como se describe en esta breve guía.
Buscar cajas de Vagrant desactualizadas
He estado usando Vagrant durante los últimos meses con fines de prueba. Desde la versión 1.5 de Vagrant, las cajas admiten el control de versiones. El control de versiones de Box permite a los desarrolladores que crean cajas enviar actualizaciones o correcciones y a los usuarios actualizar fácilmente la caja subyacente.
Si una caja está desactualizada, el usuario será notificado cuando inicie el entorno de vagrant usando vagrant up
comando:
$ vagrant up
Salida de muestra:
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'generic/alpine38' version '3.1.16' is up to date...
==> default: A newer version of the box 'generic/alpine38' for provider 'virtualbox' is
==> default: available! You currently have version '3.1.16'. The latest is version
==> default: '3.1.22'. Run `vagrant box update` to update.
==> default: Clearing any previously set forwarded ports...
...
El usuario también puede verificar manualmente las casillas desactualizadas en su entorno Vagrant actual usando vagrant box outdated
comando:
$ vagrant box outdated
Este comando le mostrará la lista de casillas que deben actualizarse.
Checking if box 'generic/alpine38' version '3.1.16' is up to date...
A newer version of the box 'generic/alpine38' for provider 'virtualbox' is
available! You currently have version '3.1.16'. The latest is version
'3.1.22'. Run `vagrant box update` to update.
Si desea verificar todas las casillas instaladas, simplemente agregue --global
bandera al final:
$ vagrant box outdated --global
Salida de muestra:
/usr/share/rubygems-integration/all/gems/vagrant-2.2.6/plugins/commands/box/command/outdated.rb:65: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call /usr/share/rubygems-integration/all/gems/vagrant-2.2.6/lib/vagrant/box.rb:124: warning: The called method `load_metadata' is defined here * 'oraclelinux/8' for 'libvirt' (v8.3.183) is up to date * 'oraclelinux/7' for 'virtualbox' is outdated! Current: 7.9.184. Latest: 7.9.185 * 'generic/alpine38' for 'virtualbox' is outdated! Current: 3.1.16. Latest: 3.1.22 * 'fedora33' for 'virtualbox' wasn't added from a catalog, no version information * 'archlinux/archlinux' for 'virtualbox' is outdated! Current: 20201215.11392. Latest: 20210115.13749 * 'archlinux/archlinux' for 'virtualbox' is outdated! Current: 20201201.10292. Latest: 20210115.13749 * 'Fedora33' for 'libvirt' wasn't added from a catalog, no version information
Como puede ver en el resultado anterior, tengo algunos cuadros obsoletos.
Los usuarios pueden actualizar el cuadro asociado con el entorno actual de Vagrant con el comando:
$ vagrant box update
El comando anterior descarga la nueva versión de box y la instala. Todos los cuadros descargados se guardan en ~/.vagrant.d/boxes
directorio en su sistema host. La versión anterior del cuadro permanecerá disponible en la misma ubicación hasta que elimine manualmente ese cuadro Vagrant de la carpeta de caché.
Puede verificar si enumera todas las cajas de Vagrant instaladas con el comando:
$ vagrant box list
Salida de muestra:
Fedora33 (libvirt, 0)
archlinux/archlinux (virtualbox, 20201201.10292)
archlinux/archlinux (virtualbox, 20201215.11392)
fedora33 (virtualbox, 0)
generic/alpine38 (virtualbox, 3.1.16)
oraclelinux/7 (virtualbox, 7.9.184)
oraclelinux/8 (libvirt, 8.3.183)
Como puede ver en el resultado anterior, tengo dos versiones de Arch Linux vagrant boxes. No hay necesidad de mantener dos cajas del mismo sistema operativo. Así que eliminemos la caja vagabunda obsoleta.
Eliminar cajas vagabundas obsoletas
Puedes usar vagrant box prune
Comando para eliminar las cajas Vagrant desactualizadas en su sistema Linux.
Primero, verifiquemos qué casillas se eliminarán y cuáles se mantendrán con --dry-run
opción. La opción se usa para simular comandos sin cambiar nada en un sistema Linux.
$ vagrant box prune --dry-run
Este comando en realidad no eliminará ningún cuadro, sino que solo imprimirá los cuadros que se eliminarían.
Salida de muestra:
The following boxes will be kept...
Fedora33 (libvirt, 0)
archlinux/archlinux (virtualbox, 20201215.11392)
fedora33 (virtualbox, 0)
generic/alpine38 (virtualbox, 3.1.16)
oraclelinux/7 (virtualbox, 7.9.184)
oraclelinux/8 (libvirt, 8.3.183)
Checking for older boxes...
Would remove archlinux/archlinux virtualbox 20201201.10292
Como puede ver en el resultado anterior, el cuadro vagabundo llamado "archlinux/archlinux virtualbox 20201201.10292
" será eliminado de su sistema.
Ahora sabe qué caja se va a eliminar. Si está bien para usted, simplemente ejecute el mismo comando comando sin --dry-run
opción:
$ vagrant box prune
Este comando mantendrá los cuadros actualizados actuales y eliminará todos los demás cuadros obsoletos.
The following boxes will be kept...
Fedora33 (libvirt, 0)
archlinux/archlinux (virtualbox, 20201215.11392)
fedora33 (virtualbox, 0)
generic/alpine38 (virtualbox, 3.1.16)
oraclelinux/7 (virtualbox, 7.9.184)
oraclelinux/8 (libvirt, 8.3.183)
Checking for older boxes...
Removing box 'archlinux/archlinux' (v20201201.10292) with provider 'virtualbox'...
Vagrant-libvirt plugin removed box only from you LOCAL ~/.vagrant/boxes directory
From libvirt storage pool you have to delete image manually(virsh, virt-manager or by any other tool)
Ahora verifique la lista de cajas instaladas:
$ vagrant box list
Fedora33 (libvirt, 0)
archlinux/archlinux (virtualbox, 20201215.11392)
fedora33 (virtualbox, 0)
generic/alpine38 (virtualbox, 3.1.16)
oraclelinux/7 (virtualbox, 7.9.184)
oraclelinux/8 (libvirt, 8.3.183)
¿Ver? Ahora solo muestra una caja vagabunda de archlinux. El cuadro obsoleto se elimina.
La prune
El comando también tiene otras opciones útiles. Puedes usar -p
, --provider
opción para destruir cajas con un PROVEEDOR específico (por ejemplo, Virtualbox o libvirt).
El -f
, --force
bandera destruye sin confirmación, incluso cuando la caja está en uso. El -k
, --keep-active-boxes
La opción se usa para mantener las cajas aún en uso activo.
Para mostrar la sección de ayuda, ejecute:
$ vagrant box prune --help