Как удалить устаревшие Vagrant Box в Linux
Возможно, вы загрузили несколько версий коробок Vagrant, и некоторые из них могут сильно устареть! Если они больше не нужны, вы можете безопасно удалить устаревшие ящики Vagrant в Linux, как описано в этом кратком руководстве.
Проверьте устаревшие коробки Vagrant
Последние несколько месяцев я использую Vagrant в целях тестирования. Начиная с версии Vagrant 1.5, боксы поддерживают управление версиями. Управление версиями Box позволяет разработчикам, создающим блоки, отправлять обновления или исправления, а пользователям легко обновлять базовый блок.
Если ящик устарел, пользователь будет уведомлен при запуске бродячей среды с помощью команды 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 с помощью команды 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 Boxes
Вы можете использовать команду vagrant box prune
, чтобы удалить устаревшие ящики Vagrant в вашей системе Linux.
Сначала давайте проверим, какие ящики будут удалены, а какие останутся с помощью опции --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 Boxes
Теперь проверим список установленных боксов:
$ 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. Устаревший ящик удаляется.
Команда prune
имеет и другие полезные параметры. Вы можете использовать опцию -p
, --provider
для уничтожения ящиков с определенным ПРОВАЙДЕРОМ (например, Virtualbox или libvirt).
Флаг -f
, --force
уничтожает без подтверждения, даже когда ящик используется. Параметр -k
, --keep-active-boxes
используется для того, чтобы ящики продолжали активно использоваться.
Чтобы отобразить раздел справки, запустите:
vagrant box prune --help