Фактичний .box
файл видаляється Vagrant після завершення встановлення завантаження та вікна. Як зазначено в інших відповідях, під час завантаження файл .box зберігається як:
~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
де ім'я файлу - "поле", після якого 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
Це вимагає, щоб ви змінили джерело рубіну, щоб запобігти видаленню 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
функції є блок, який читає:
переконайтеся, що ми видалимо тимчасовий файл після того, як ми його додамо, # якщо нас не перервали, і в такому випадку ми збережемо його навколо #, щоб ми могли відновити завантаження пізніше. якщо! @download_interrupt @ logger.debug ("Видалення тимчасового поля: # {box_url}") почати box_url.delete, якщо box_url рятування Errno :: ENOENT # Не велика справа, тимчасовий файл може фактично не мати кінця кінця
- Прокоментуйте цей блок.
- Додайте ще одне поле, використовуючи
vagrant add box <boxname>
.
- Дочекайтеся його завантаження. Ви можете спостерігати за збереженням у
~/.vagrant.d/tmp/
каталозі у вигляді boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
файлу.
- Перейменуйте файл на щось більш корисне. Наприклад,
mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
.
Чому б ти цього хотів?
Для мене це було корисним для отримання файлу .box, щоб його можна було розмістити на локальній, швидкій інфраструктурі, на відміну від завантаження з каталогу вікна HashiCorp Atlas або іншого постачальника коробки .
Це дійсно має бути частиною функціональності Vagrant за замовчуванням, оскільки він має дуже остаточний випадок використання.
sudo find / -name lucid32.box
.