Di mana Vagrant mengunduh file .box?


267

Apa yang terjadi pada file .box setelah perintah berikut dijalankan?

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

Saya tidak dapat menemukan lucid32.boxfile di sistem file setelah unduhan selesai.


Saya pikir saya benar-benar kehilangan maksud Anda karena hal pertama yang muncul di pikiran saya adalah sudo find / -name lucid32.box.
rasional John

persis apa yang saya lakukan, tetapi saya harus kehilangan sesuatu karena saya tidak dapat menemukan lucid32.boxmenggunakan perintah yang tepat ini ...
Calvin Cheng

3
Mungkin itu tidak ada dengan nama itu. Pencarian kartu liar seperti *.boxmungkin? (BTW, bukankah perpanjangannya akan .vbox?)
John,

Ya kamu benar. Pencarian harus untuk *.vboxdan not *.box. Misteri terpecahkan. :-) Apakah Anda ingin memasukkan jawaban agar saya dapat menerimanya? Terima kasih!
Calvin Cheng

1
@ CalvinCheng: Saya pikir Anda salah mengira itu hanya gambar .vbox di arsip tar. Ini memang arsip tar, tetapi berisi file seperti box-disk1.vmdk, box.ovf, dan Vagrantfile. Saya tidak tahu persis bagaimana mereka digunakan untuk membuat file yang digunakan VirtualBox, tetapi jika Anda membuka file .vbox VB Anda akan melihat itu hanya XML. Saya berasumsi Vagrant mengubah file-nya (juga file biner dan XML, plus Vagrantfile) menjadi file XML dan biner yang digunakan oleh VirtualBox. Namun, jika Anda membuka file biner, Anda akan melihat mereka berbeda, jadi ini bukan masalah penguraian dan penggantian nama yang mudah.
iconoclast

Jawaban:


397

Seperti disebutkan dalam dokumen , kotak disimpan di:

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

1
Ah. Terimakasih atas klarifikasinya. Saya pasti buta karena melewatkan penjelasan itu dalam dokumen.
Calvin Cheng

1
@ manojlds: lihat komentar saya pada pertanyaan re: file .vbox. Ini bukan VM dengan sendirinya, itu hanya file XML.
iconoclast

tempat yang sama di OS Windows?
Arruda

34
Anda juga dapat menggunakan env var VAGRANT_HOME untuk menentukan lokasi .vagrant.d, seperti pada VAGRANT_HOME = D: \. Vagrant.d (Ya, itu juga berfungsi di Windows).
Sven

5
di C:\Users\{username}\.vagrant.d\boxesjendela, saya hanya menemukan .vmdkfile bukan .box!!
Bilal

76

Pada Sistem Mac / Linux, kotak yang berhasil diunduh terletak di:

~/.vagrant.d/boxes

dan kotak yang gagal terletak di:

~/.vagrant.d/tmp

Pada sistem Windows, ia terletak di bawah folder Users:

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

Semoga ini bisa membantu. Terima kasih


10
Tidak yakin mengapa ini diturunkan. Informasi tentang tujuan unduhan yang gagal bermanfaat.
Alex Coventry

~/.vagrant.d/boxestidak pernah menyimpan file .box itu sendiri, hanya isinya. ~/.vagrant/tmpdigunakan untuk menyimpan .box sementara sementara mengunduh tetapi dihapus pada saat instalasi dalam Vagrant.
Luke Peterson

Baris ketiga (untuk Windows) seharusnya%userprofile%\.vagrant.d\boxes
J. Scott Elblein

Jawaban ini untuk kasus bahwa Anda benar-benar peduli dengan ruang hard disk Anda.
kiltek


20

File yang sebenarnya .boxdihapus oleh Vagrant setelah pengunduhan dan instalasi kotak selesai. Seperti disebutkan dalam jawaban lain, saat mengunduh, file .box disimpan sebagai:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

di mana nama file adalah 'kotak' diikuti oleh hash heksadesimal 40 byte. File sementara di sistem saya misalnya, adalah:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

Sejauh yang saya tahu, file ini tidak pernah disimpan dengan *.boxekstensi, yang menjelaskan mengapa pencarian di atas gagal menemukannya. Ada dua cara untuk mengambil file kotak yang sebenarnya:

  1. Unduh file .box dari vagrantcloud.com

    1. Temukan kotak yang Anda minati di atlas . Misalnya, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. Ganti nama domain dengan vagrantcloud.com. Jadi https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 menjadi https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
    3. Tambahkan /providers/virtualbox.boxke akhir URL itu. Jadi https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 menjadi https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. Simpan file .box
    5. Gunakan .box sesuai keinginan, misalnya, hosting sendiri dan tunjuk config.vm.box_url ke URL. ATAU
  2. Dapatkan kotak. Langsung dari Vagrant

    Ini mengharuskan Anda untuk memodifikasi sumber ruby ​​untuk mencegah Vagrant menghapus kotak setelah unduhan berhasil.

    1. Temukan file box_add.rb di direktori instalasi Vagrant Anda. Di sistem saya itu terletak di/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. Temukan fungsi box_add. Dalambox_add fungsi, ada blok yang bertuliskan:

      pastikan # Pastikan kami menghapus file sementara setelah kami menambahkannya, # kecuali jika kami terganggu, dalam hal ini kami menyimpannya # agar kami dapat melanjutkan unduhan nanti. jika! @download_interrupted @ logger.debug ("Menghapus kotak sementara: # {box_url}") mulai box_url.delete jika box_url menyelamatkan Errno :: ENOENT # Bukan masalah besar, file temp mungkin tidak benar-benar ada ujung akhirnya

    3. Komentari blokir ini.
    4. Tambahkan kotak lain menggunakan vagrant add box <boxname> .
    5. Tunggu sampai selesai mengunduh. Anda dapat melihatnya menyimpan dalam ~/.vagrant.d/tmp/direktori sebagaiboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX file.
    6. Ubah nama file menjadi sesuatu yang lebih berguna. Misalnya mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box,.

Mengapa Anda menginginkan ini?

Bagi saya, ini berguna untuk mengambil file .box sehingga dapat di-host di infrastruktur lokal yang cepat daripada men-download dari katalog kotak Atlas HashiCorp atau penyedia kotak lainnya .

Ini benar-benar harus menjadi bagian dari fungsi Vagrant default karena memiliki use case yang sangat definitif.


apakah mungkin untuk suka, zip atau tar subfolder di folder kotak untuk membuat file kotak yang dapat diinstal?
ThorSummoner

@ThorSummoner Ya, tetapi Anda juga dapat membiarkan Vagrant menanganinya dalam hal itu, misalnya, melalui vagrant packageperintah: docs.vagrantup.com/v2/cli/package.html .
Luke Peterson

15

@ Lukas Peterson: Ada cara sederhana untuk mendapatkan file .box.

Cukup buka https://atlas.hashicorp.com/boxes/search , cari kotak yang ingin Anda unduh. Perhatikan URL kotak, misalnya:

https://atlas.hashicorp.com/ ubuntu / boxes / trusty64 / versi / 20150530.0.1

Kemudian Anda dapat mengunduh kotak ini menggunakan URL seperti ini:

https://vagrantcloud.com/ ubuntu / boxes / trusty64 / versi / 20150530.0.1 /providers/virtualbox.box

Saya mencoba dan berhasil mengunduh semua kotak yang saya butuhkan. Semoga bantuan itu.


Ini adalah sebuah penemuan besar! Terima kasih. ;)
Luke Peterson

Tautan sekarang rusak - perlu diganti dengan: app.vagrantup.com .
RtmY

6

Di Windows, lokasi dapat ditemukan di sini. Saya tidak menemukan dokumentasi di internet untuk ini, dan ini tidak segera jelas bagi saya:

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


Apakah% userprofile% \. Vagrant.d \ boxes kemudian berfungsi? % userprofile% berkembang menjadi c: \ users \ {username}
TamusJRoyce

2

Sebagai tambahannya

Mac:
~/.vagrant.d/

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

Anda harus menghapus file dalam VirtualBox / OtherVMprovider untuk melakukan awal yang bersih.


0

Pada Windows 10 dengan Vagrant 2.2.2 , pengaturan variabel lingkungan VAGRANT_HOMEakan memastikan bahwa kotak diunduh ke subfolder dari folder yang ditentukan VAGRANT_HOME.

Dalam kasus saya, saya mengatur VAGRANT_HOMEke e:\vagrant_home, dan kotak disimpan di bawah e:\vagrant_home\boxes.

Ini bekerja untuk saya.

Di situlah kotak disimpan. Mesin virtual sedang dibuat di folder yang dikonfigurasi dalam Kotak Virtual. Untuk mengatur folder penyimpanan VirtualBox VM, pergi ke: VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.