Куди 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.