Možná jste si stáhli několik verzí krabic Vagrant a některé z nich mohou být značně zastaralé! Pokud již nejsou vyžadovány, můžete v Linuxu bezpečně odstranit zastaralé krabice Vagrant, jak je popsáno v tomto stručném průvodci.
Kontrola zastaralých krabic Vagrant
Používám Vagrant za posledních několik měsíců pro testovací účely. Od verze Vagrant 1.5 boxy podporují verzování. Verze krabic umožňuje vývojářům, kteří vyrábějí krabice, zasílat aktualizace nebo opravy a uživatelům snadno aktualizovat základní krabici.
Pokud je krabice zastaralá, uživatel bude upozorněn, když spustí prostředí vagrant pomocí vagrant up
příkaz:
$ vagrant up
Ukázkový výstup:
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...
...

Uživatel může také ručně zkontrolovat zastaralá políčka ve vašem aktuálním prostředí Vagrant pomocí vagrant box outdated
příkaz:
$ vagrant box outdated
Tento příkaz vám zobrazí seznam polí, která je třeba aktualizovat.
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.
Pokud chcete zkontrolovat všechny nainstalované boxy, jednoduše přidejte --global
vlajka na konci:
$ vagrant box outdated --global
Ukázkový výstup:
/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
Jak můžete vidět ve výše uvedeném výstupu, mám nějaké zastaralé boxy.
Uživatelé mohou aktualizovat box spojený s aktuálním prostředím Vagrant příkazem:
$ vagrant box update
Výše uvedený příkaz stáhne novou verzi boxu a nainstaluje ji. Všechny stažené boxy jsou uloženy v ~/.vagrant.d/boxes
adresář ve vašem hostitelském systému. Starší verze krabice zůstane k dispozici na stejném místě, dokud ručně neodstraníte krabici Vagrant ze složky mezipaměti.
Můžete to ověřit výpisem všech nainstalovaných boxů Vagrant příkazem:
$ vagrant box list
Ukázkový výstup:
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)

Jak můžete vidět ve výše uvedeném výstupu, mám dvě verze krabiček Arch Linux vagrant. Není potřeba mít dvě krabice stejného OS. Pojďme tedy odstranit zastaralou krabici tuláků.
Smazat zastaralé krabice tuláků
Můžete použít vagrant box prune
příkaz k odstranění zastaralých krabic Vagrant ve vašem systému Linux.
Nejprve ověřte, které boxy budou smazány a které zůstanou zachovány pomocí --dry-run
volba. Tato možnost se používá k simulaci příkazů aniž byste cokoli měnili v systému Linux.
$ vagrant box prune --dry-run
Tento příkaz ve skutečnosti neodstraní žádná pole, ale vytiskne pouze pole, která by byla odstraněna.
Ukázkový výstup:
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
Jak vidíte ve výše uvedeném výstupu, tulákový box s názvem "archlinux/archlinux virtualbox 20201201.10292
" bude odstraněn z vašeho systému.
Nyní víte, která krabice bude odstraněna. Pokud je to pro vás v pořádku, jednoduše spusťte stejný příkaz příkaz bez --dry-run
možnost:
$ vagrant box prune
Tento příkaz zachová aktuální aktualizované boxy a odstraní všechny ostatní zastaralé boxy.
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)

Nyní zkontrolujte seznam nainstalovaných boxů:
$ 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)

Vidět? Nyní ukazuje pouze jeden archlinuxový tulák. Zastaralé pole je smazáno.
prune
příkaz má také další užitečné možnosti. Můžete použít -p
, --provider
možnost zničit krabice s konkrétním PROVIDEREM (např. Virtualbox nebo libvirt).
-f
, --force
vlajka zničí bez potvrzení, i když je krabice používána. -k
, --keep-active-boxes
Tato možnost se používá k udržení krabic stále aktivně používaných.
Chcete-li zobrazit sekci nápovědy, spusťte:
$ vagrant box prune --help