Куди Vagrant завантажує свої файли .box?


267

Що відбувається з файлом .box після виконання наступної команди?

vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

Я не можу знайти lucid32.boxфайл у файловій системі після завершення завантаження.


Я думаю, що я повністю пропускаю вашу думку, тому що перше, що вискакує мені на думку sudo find / -name lucid32.box.
нераціональний Джон

саме те, що я зробив, але мені, мабуть, щось не вистачає, оскільки я не зміг знайти lucid32.boxцю точну команду ...
Калвін Чен

3
Можливо, його з цією назвою не існує. Пошуки wild карт, такі як, *.boxможливо? (BTW, чи не буде розширення .vbox?)
нераціональний Джон

Так, ти маєш рацію. Пошук повинен бути *.vboxі not *.box. Таємниця вирішена. :-) Ви хочете ввести відповідь, щоб я міг її прийняти? Дякую!
Келвін Чен

1
@CalvinCheng: Я думаю, ви помиляєтесь, що це просто зображення .vbox в архіві смоли. Це дійсно тар-архів, але він містить такі файли, як box-disk1.vmdk, box.ovf та Vagrantfile. Я точно не знаю, як вони використовуються для створення файлів, якими користується VirtualBox, але якщо ви відкриєте .vbox файл VB, ви побачите, що це просто XML. Я припускаю, що Vagrant перетворює свої файли (також двійковий та XML-файл, а також Vagrantfile) у XML та бінарні файли, які використовує VirtualBox. Однак, якщо ви відкриєте двійкові файли, ви побачите, що вони різні, тож розв’язання та перейменування не є простим.
іконоборство

Відповіді:


397

Як зазначено в документах , вікна зберігаються на:

  • Mac OS X та Linux: ~/.vagrant.d/boxes
  • Windows: C:/Users/USERNAME/.vagrant.d/boxes

1
Ага. Дякуємо за роз’яснення. Я повинен бути сліпим, щоб пропустив це пояснення в документах.
Келвін Чен

1
@manojlds: дивіться мій коментар до питання про: файл .vbox. Це не сам VM, це лише XML-файл.
іконоборство

те саме місце в ОС Windows?
Арруда

34
Ви також можете використовувати en-var VAGRANT_HOME, щоб вказати розташування .vagrant.d, як у VAGRANT_HOME = D: \. Vagrant.d (Так, він працює і в Windows).
Свен

5
у C:\Users\{username}\.vagrant.d\boxesWindows, я знайшов тільки .vmdkфайл не той .box!!
Білал

76

У системі Mac / Linux успішно завантажені вікна розміщені за адресою:

~/.vagrant.d/boxes

а невдалі коробки розташовані за адресою:

~/.vagrant.d/tmp

У системах Windows він знаходиться в папці Користувачі:

C:\Users\%userprofile%\.vagrant.d\boxes

Сподіваюсь, це допоможе. Дякую


10
Не впевнений, чому це було знято. Інформація про призначення невдалого завантаження була корисною.
Алекс Ковентрі

~/.vagrant.d/boxesніколи не зберігає сам файл .box, просто його вміст. ~/.vagrant/tmpвикористовується для тимчасового зберігання .box під час завантаження, але видаляється після встановлення в Vagrant.
Люк Петерсон

Третій рядок (для Windows) повинен бути%userprofile%\.vagrant.d\boxes
Дж. Скотт Елблейн

Ця відповідь стосується випадку, коли ви насправді дбаєте про місце на своєму жорсткому диску.
kiltek

45

Щоб змінити Шлях, ви можете встановити новий Шлях до змінної навколишнього середовища з назвою: VAGRANT_HOME

export VAGRANT_HOME=my/new/path/goes/here/

Це може бути приємно, якщо ви хочете мати ці бродячі зображення на іншому жорсткому диску.

Більше інформації тут у Документаціях: http://docs.vagrantup.com/v2/other/environmental-variables.html


20

Фактичний .boxфайл видаляється Vagrant після завершення встановлення завантаження та вікна. Як зазначено в інших відповідях, під час завантаження файл .box зберігається як:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

де ім'я файлу - "поле", після якого 40-байтний шістнадцятковий хеш. Наприклад, тимчасовим файлом у моїй системі є:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

Наскільки я можу сказати, цей файл ніколи не зберігається з *.boxрозширенням, що пояснює, чому пошукові запити вище не змогли його знайти. Є два способи отримати фактичний файл вікна:

  1. Завантажте файл .box з vagrantcloud.com

    1. Знайдіть поле, яке вас цікавить, в атласі . Наприклад, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. Замініть ім'я домену на 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 .
    3. Додати /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
    4. Збережіть файл .box
    5. Використовуйте .box за своїм бажанням, наприклад, розмістивши його самостійно та вказавши config.vm.box_urlна URL-адресу. АБО
  2. Отримайте .box безпосередньо від Vagrant

    Це вимагає, щоб ви змінили джерело рубіну, щоб запобігти видаленню Vagrant поля після успішного завантаження.

    1. Знайдіть файл box_add.rb у каталозі встановлення Vagrant. У моїй системі він знаходиться за адресою/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. Знайдіть функцію box_add. У межах box_addфункції є блок, який читає:

      переконайтеся, що ми видалимо тимчасовий файл після того, як ми його додамо, # якщо нас не перервали, і в такому випадку ми збережемо його навколо #, щоб ми могли відновити завантаження пізніше. якщо! @download_interrupt @ logger.debug ("Видалення тимчасового поля: # {box_url}") почати box_url.delete, якщо box_url рятування Errno :: ENOENT # Не велика справа, тимчасовий файл може фактично не мати кінця кінця

    3. Прокоментуйте цей блок.
    4. Додайте ще одне поле, використовуючи vagrant add box <boxname>.
    5. Дочекайтеся його завантаження. Ви можете спостерігати за збереженням у ~/.vagrant.d/tmp/каталозі у вигляді boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXфайлу.
    6. Перейменуйте файл на щось більш корисне. Наприклад, mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box.

Чому б ти цього хотів?

Для мене це було корисним для отримання файлу .box, щоб його можна було розмістити на локальній, швидкій інфраструктурі, на відміну від завантаження з каталогу вікна HashiCorp Atlas або іншого постачальника коробки .

Це дійсно має бути частиною функціональності Vagrant за замовчуванням, оскільки він має дуже остаточний випадок використання.


чи можна сподобатись, зашпаркувати або відскакувати підпапки в папці "Скриньки", щоб створити встановлений файл коробки?
ThorSummoner

@ThorSummoner Так, але ви можете дозволити Vagrant впоратися з цим у такому випадку, наприклад, за допомогою vagrant packageкоманди: docs.vagrantup.com/v2/cli/package.html .
Люк Петерсон

15

@Luke Peterson: Існує простіший спосіб отримати .box файл.

Просто перейдіть на сторінку https://atlas.hashicorp.com/boxes/search , знайдіть поле, яке ви хочете завантажити. Помітьте URL-адресу поля, наприклад:

https://atlas.hashicorp.com/ ubuntu / box / trusty64 / версії / 20150530.0.1

Потім ви можете завантажити це поле за допомогою такої URL-адреси:

https://vagrantcloud.com/ ubuntu / box / trusty64 / версії / 20150530.0.1 /providers/virtualbox.box

Я спробував і успішно завантажував усі потрібні ящики. Сподіваюся, що допоможе.


Це чудова знахідка! Дякую. ;)
Люк Петерсон

Зараз посилання розірвано - його потрібно замінити на: app.vagrantup.com .
RtmY

6

У Windows розташування можна знайти тут. Я не знайшов жодної документації в Інтернеті для цього, і це було мені не відразу:

C:\Users\\{username}\\.vagrant.d\boxes


Чи працює тоді userprofile% \. Vagrant.d \ box? % userprofile% розширюється до c: \ users \ {ім'я користувача}
TamusJRoyce

2

Окрім

Mac:
~/.vagrant.d/

Windows:
C:\Users\%userprofile%\.vagrant.d\boxes

Для чистого початку вам потрібно видалити файли в VirtualBox / OtherVMprovider.


0

У Windows 10 з Vagrant 2.2.2 встановлення змінної середовища VAGRANT_HOMEзабезпечить завантаження вікон у підпапку папки, визначеної для VAGRANT_HOME.

У моєму випадку я поставив VAGRANT_HOMEв e:\vagrant_homeі ящики відкладаються під e:\vagrant_home\boxes.

Це працює для мене.

Ось де зберігаються коробки . У віртуальних машинах створюються в папці , сконфигурированной в Virtual Box. Для того, щоб встановити папку для зберігання VirtualBox VM, перейдіть за посиланням: VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.