你可能已經下載了多個版本的 Vagrant 盒子,其中一些可能更舊!你可以在 Linux 上安全地刪除舊的 Vagrant 盒子。
檢查過時的流浪者盒子
我在用 流浪漢 在過去的幾個月裡,它已被用於測試目的。 從 Vagrant 1.5 版開始,box 支持版本控制。 Box 版本控制允許創建 Box 的開發人員推送更新或修復,並且用戶可以輕鬆更新底層 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
上述命令將下載並安裝更新版本的 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)
從上面的輸出可以看出,Arch Linux vagrant box 有兩個版本。無需保留兩個具有相同操作系統的盒子。現在讓我們刪除過時的 vagrant box。
刪除過時的 Vagrant Box
你可以使用它 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 框。已棄用的框已刪除。
這個 prune
該命令還有其他有用的選項。你可以使用它 -p
, --provider
使用特定 PROVIDER(例如 Virtualbox 或 libvirt)銷毀盒子的選項。
這個 -f
, --force
即使盒子正在使用中,標誌也會被丟棄而無需確認。這個 -k
, --keep-active-boxes
繼續使用該框的選項。
要查看幫助部分,請運行:
$ vagrant box prune --help
盒子版本控制流浪盒子移除LinuxVagrant流浪盒子虛擬化