您可能已經下載了多個版本的 Vagrant box,其中一些可能較舊!您可以安全地刪除 Linux 上的舊 Vagrant box。
檢查舊的 Vagrant Box
我在用 流浪漢 在過去的幾個月裡,它一直被用於測試目的。 從 Vagrant 版本 1.5 開始,該框支持版本控制。 Box Versioning 允許創建 Box 的開發人員推送更新和修復,以及用戶輕鬆更新底層 Box。
如果盒子已過期,將在 vagrant 環境啟動時通知用戶 vagrant up
命令:
$ 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 環境中手動選中舊框。 vagrant box outdated
命令:
$ 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
上面的命令下載並安裝新版本的盒子。所有下載的盒子都存儲在 ~/.vagrant.d/boxes
主機系統上的目錄。盒子的舊版本將繼續在同一位置工作,直到您手動從緩存文件夾中刪除 Vagrant 盒子。
您可以使用以下命令列出所有已安裝的 Vagrant box 來進行檢查:
$ 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)
從上面的輸出可以看出,Arch Linux vagrant box 有兩個版本。無需保留兩個具有相同操作系統的盒子。現在讓我們刪除過時的 vagrant 框。
移除過時的 Vagrant Boxes
你可以使用它 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
”將從系統中刪除。
現在您知道要刪除哪個框了。如果願意,運行相同的命令命令。 --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)

看?目前只顯示 archlinux vagrant box。已棄用的框已刪除。
這個 prune
該命令還有其他有用的選項。你可以使用它 -p
, --provider
選擇使用特定的提供者(如 Virtualbox 或 libvirt)銷毀盒子。
這個 -f
, --force
即使盒子在使用中,標誌也會在未經確認的情況下被丟棄。這個 -k
, --keep-active-boxes
繼續使用該框的選項。
要查看幫助部分,請運行:
$ vagrant box prune --help
box versioning vagrant box removal LinuxVagrantVagrant 盒子虛擬化