Фактический .box
файл удаляется Vagrant после завершения загрузки и установки. Как упоминалось в других ответах, при загрузке файл .box хранится как:
~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
где имя файла 'box', за которым следует 40-байтовый шестнадцатеричный хеш. Временный файл в моей системе, например:
~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f
Насколько я могу судить, этот файл никогда не сохраняется с *.box
расширением, которое объясняет, почему поиск не смог его найти. Есть два способа получить фактический файл коробки:
Загрузите файл .box с vagrantcloud.com
- Найдите интересующую вас коробку на атласе . Например,
https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
- Заменить доменное имя на
vagrantcloud.com
. Так https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
становится https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
- Добавьте
/providers/virtualbox.box
в конец этого URL. Так https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 становится https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
- Сохраните файл .box
- Используйте .box по своему усмотрению, например, разместив его самостоятельно и указав
config.vm.box_url
URL. ИЛИ
Получите .box прямо из Vagrant
Для этого необходимо изменить источник ruby, чтобы Vagrant не удалял ящик после успешной загрузки.
- Найдите файл box_add.rb в вашем установочном каталоге Vagrant. В моей системе это находится в
/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
- Найдите функцию box_add. Внутри
box_add
функции есть блок, который читает:
Убедитесь, # что мы удалили временный файл после того, как добавили его, # если мы не были прерваны, и в этом случае мы сохраним его #, чтобы мы могли возобновить загрузку позже. if! @download_interrupted @ logger.debug ("Удаление временного блока: # {box_url}") begin box_url.delete if box_url rescue Errno :: ENOENT # Ничего страшного, временный файл может фактически не существовать end end
- Прокомментируйте этот блок.
- Добавьте еще одно поле, используя
vagrant add box <boxname>
.
- Подождите, пока он загрузится. Вы можете посмотреть его сохранить в
~/.vagrant.d/tmp/
каталоге какboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
файла.
- Переименуйте файл во что-нибудь более полезное. Например,
mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
.
Зачем тебе это?
Для меня это было полезно для извлечения файла .box, чтобы его можно было разместить в локальной быстрой инфраструктуре, а не загружать его из коробочного каталога HashiCorp Atlas или другого поставщика коробок .
Это действительно должно быть частью функциональности Vagrant по умолчанию, поскольку она имеет очень определенный вариант использования.
sudo find / -name lucid32.box
.