Vagrantボックスのいくつかのバージョンをダウンロードした可能性があり、それらのいくつかはかなり古い可能性があります!不要になった場合は、この簡単なガイドで説明されているように、Linuxで古いVagrantボックスを安全に削除できます。
Vagrantを使用しています テスト目的で過去数か月間。 Vagrantバージョン1.5以降、ボックスはバージョン管理をサポートしています。ボックスバージョニングを使用すると、ボックスを作成する開発者は更新または修正をプッシュでき、ユーザーは基になるボックスを簡単に更新できます。
ボックスが古くなっている場合、vagrant up
を使用してvagrant環境を開始するとユーザーに通知されます コマンド:
$ vagrant up
出力例:
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...
...
ユーザーは、vagrant box outdated
を使用して、現在のVagrant環境で古いボックスを手動で確認することもできます。 コマンド:
$ vagrant box outdated
このコマンドは、更新が必要なボックスのリストを表示します。
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.
インストールされているすべてのボックスをチェックする場合は、--global
を追加するだけです。 最後にフラグを立てる:
$ vagrant box outdated --global
出力例:
/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
上記の出力でわかるように、古いボックスがいくつかあります。
ユーザーは、コマンドを使用して現在のVagrant環境に関連付けられているボックスを更新できます:
$ vagrant box update
上記のコマンドは、新しいバージョンのboxをダウンロードしてインストールします。ダウンロードしたすべてのボックスは、 ~/.vagrant.d/boxes
に保存されます ホストシステムのディレクトリ。古いバージョンのボックスは、そのVagrantボックスをキャッシュフォルダーから手動で削除するまで、同じ場所で引き続き使用できます。
次のコマンドを使用して、インストールされているすべてのVagrantボックスを一覧表示することで確認できます:
$ vagrant box list
出力例:
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)
上記の出力でわかるように、ArchLinuxのvagrantボックスには2つのバージョンがあります。同じOSのボックスを2つ保持する必要はありません。それでは、古いVagrantボックスを削除しましょう。
古いVagrantボックスを削除する
vagrant box prune
を使用できます Linuxシステムの古いVagrantボックスを削除するコマンド。
まず、どのボックスが削除され、どのボックスが--dry-run
で保持されるかを確認しましょう。 オプション。このオプションは、コマンドのシミュレーションに使用されます Linuxシステムでは何も変更せずに。
$ vagrant box prune --dry-run
このコマンドは実際にはボックスを削除しませんが、削除されるボックスのみを印刷します。
出力例:
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
上記の出力にあるように、「 archlinux/archlinux virtualbox 20201201.10292
」という名前のvagrantボックス 「システムから削除されます。
これで、どのボックスが削除されるかがわかりました。問題がない場合は、同じコマンドコマンドをなしで実行するだけです。 --dry-run
オプション:
$ vagrant box prune
このコマンドは、現在更新されているボックスを保持し、他のすべての古いボックスを削除します。
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)
次に、インストールされているボックスのリストを確認します。
$ 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)
見る?これで、archlinuxvagrantボックスが1つだけ表示されます。古いボックスが削除されます。
prune
コマンドには他の便利なオプションもあります。 -p
を使用できます 、--provider
特定のPROVIDER(Virtualboxやlibvirtなど)でボックスを破棄するオプション。
-f
、--force
ボックスが使用中であっても、フラグは確認なしで破棄されます。 -k
、--keep-active-boxes
オプションは、ボックスを引き続きアクティブに使用し続けるために使用されます。
ヘルプセクションを表示するには、次を実行します:
$ vagrant box prune --help