Potresti aver scaricato diverse versioni di scatole Vagrant e alcune di esse potrebbero essere piuttosto obsolete! Se non sono più necessari, puoi eliminare in modo sicuro le scatole Vagrant obsolete in Linux come descritto in questa breve guida.
Cerca le caselle Vagrant obsolete
Ho usato Vagrant negli ultimi mesi a scopo di test. A partire dalla versione 1.5 di Vagrant, i box supportano il controllo delle versioni. Il controllo delle versioni della scatola consente agli sviluppatori che creano scatole di inviare aggiornamenti o correzioni e agli utenti di aggiornare facilmente la scatola sottostante.
Se una casella non è aggiornata, l'utente verrà avvisato quando avvia l'ambiente vagrant utilizzando vagrant up
comando:
$ vagrant up
Risultato di esempio:
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...
...

L'utente può anche controllare manualmente le caselle obsolete nell'ambiente Vagrant corrente utilizzando vagrant box outdated
comando:
$ vagrant box outdated
Questo comando ti mostrerà l'elenco delle caselle che devono essere aggiornate.
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.
Se vuoi controllare tutte le caselle installate, aggiungi semplicemente --global
flag alla fine:
$ vagrant box outdated --global
Risultato di esempio:
/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
Come puoi vedere nell'output sopra, ho alcune scatole obsolete.
Gli utenti possono aggiornare la casella associata all'ambiente Vagrant corrente con il comando:
$ vagrant box update
Il comando precedente scarica la nuova versione di box e la installa. Tutte le scatole scaricate vengono salvate in ~/.vagrant.d/boxes
directory nel tuo sistema host. La versione precedente della scatola rimarrà disponibile nella stessa posizione fino a quando non rimuoverai manualmente quella scatola Vagrant dalla cartella della cache.
Puoi verificarlo elencando tutti i box Vagrant installati con il comando:
$ vagrant box list
Risultato di esempio:
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)

Come puoi vedere nell'output sopra, ho due versioni di scatole vagrant di Arch Linux. Non è necessario mantenere due scatole dello stesso sistema operativo. Quindi rimuoviamo la scatola del vagabondo obsoleta.
Elimina Scatole Vagrant obsolete
Puoi usare vagrant box prune
comando per rimuovere le scatole Vagrant obsolete nel tuo sistema Linux.
Per prima cosa, verifichiamo quali scatole verranno eliminate e quali verranno conservate con --dry-run
opzione. L'opzione viene utilizzata per simulare i comandi senza cambiare nulla in un sistema Linux.
$ vagrant box prune --dry-run
Questo comando in realtà non eliminerà alcuna casella, ma stamperà solo le caselle che verrebbero rimosse.
Risultato di esempio:
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
Come puoi vedere nell'output sopra, la casella vagabondo denominata "archlinux/archlinux virtualbox 20201201.10292
" verrà rimosso dal tuo sistema.
Ora sai quale scatola verrà rimossa. Se per te va bene, esegui semplicemente lo stesso comando comando senza --dry-run
opzione:
$ vagrant box prune
Questo comando manterrà le caselle attuali aggiornate e rimuoverà tutte le altre caselle obsolete.
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)

Ora verifica l'elenco delle scatole installate:
$ 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)

Vedere? Ora mostra solo una casella vagabondo di archlinux. La casella obsoleta viene eliminata.
La prune
comando ha anche altre opzioni utili. Puoi usare -p
, --provider
opzione per distruggere le scatole con un PROVIDER specifico (es. Virtualbox o libvirt).
Il -f
, --force
flag distrugge senza conferma anche quando la scatola è in uso. Il -k
, --keep-active-boxes
l'opzione viene utilizzata per mantenere le scatole ancora attivamente in uso.
Per visualizzare la sezione della guida, esegui:
$ vagrant box prune --help