Поиск по сайту:

Как удалить устаревшие 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

Статьи по данной тематике