Vagrant tải tập tin .box của nó về đâu?


267

Điều gì xảy ra với tệp .box sau khi lệnh sau được thực thi?

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

Tôi không thể tìm thấy lucid32.boxtệp trên hệ thống tệp sau khi quá trình tải xuống hoàn tất.


Tôi nghĩ rằng tôi hoàn toàn thiếu quan điểm của bạn bởi vì điều đầu tiên xuất hiện trong tâm trí của tôi là sudo find / -name lucid32.box.
phi lý John

chính xác những gì tôi đã làm, nhưng tôi phải thiếu thứ gì đó vì tôi không thể tìm thấy lucid32.boxbằng cách sử dụng lệnh chính xác này ...
Calvin Cheng

3
Có lẽ nó không tồn tại với cái tên đó. Tìm kiếm thẻ hoang dã như *.boxcó thể? (BTW, phần mở rộng sẽ .vboxkhông?)
phi lý John

Có bạn đúng. Việc tìm kiếm nên dành cho *.vboxnot *.box. Giải đáp bí ẩn. :-) Bạn có muốn trả lời câu trả lời để tôi có thể chấp nhận không? Cám ơn!
Calvin Cheng

1
@CalvinCheng: Tôi nghĩ bạn đã nhầm về nó chỉ là hình ảnh .vbox trong kho lưu trữ tar. Nó thực sự là một kho lưu trữ tar, nhưng nó chứa các tệp như box-đĩa1.vmdk, box.ovf và Vagrantfile. Tôi không biết chính xác cách chúng được sử dụng để tạo các tệp mà VirtualBox sử dụng, nhưng nếu bạn mở tệp .vbox của VB, bạn sẽ thấy đó chỉ là XML. Tôi giả sử Vagrant biến đổi các tệp của nó (cũng là tệp nhị phân và XML, cộng với Vagrantfile) thành tệp XML và tệp nhị phân được VirtualBox sử dụng. Tuy nhiên, nếu bạn mở các tệp nhị phân, bạn sẽ thấy chúng khác nhau, vì vậy việc gỡ bỏ và đổi tên không phải là vấn đề đơn giản.
iconoclast

Câu trả lời:


397

Như đã đề cập trong các tài liệu , các hộp được lưu trữ tại:

  • Mac OS X và Linux: ~/.vagrant.d/boxes
  • Các cửa sổ: C:/Users/USERNAME/.vagrant.d/boxes

1
Ah. Cảm ơn bạn đã làm rõ. Tôi phải mù quáng vì đã bỏ lỡ lời giải thích đó trong các tài liệu.
Calvin Cheng

1
@manojlds: xem bình luận của tôi về câu hỏi lại: tệp .vbox. Bản thân nó không phải là VM, nó chỉ là một tệp XML.
iconoclast

cùng một vị trí trên hệ điều hành Windows?
Arruda

34
Bạn cũng có thể sử dụng env var VAGRANT_HOME để chỉ định vị trí của .vagrant.d, như trong VAGRANT_HOME = D: \. Vagrant.d (Có, nó cũng hoạt động trong Windows).
Sven

5
trong các C:\Users\{username}\.vagrant.d\boxescửa sổ trên, tôi chỉ tìm thấy các .vmdktập tin không phải là .box!!
Song phương

76

Trên Hệ thống Mac / Linux, các hộp được tải xuống thành công được đặt tại:

~/.vagrant.d/boxes

và các hộp không thành công được đặt tại:

~/.vagrant.d/tmp

Trên các hệ thống Windows, nó nằm trong thư mục Người dùng:

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

Hy vọng điều này sẽ giúp. Cảm ơn


10
Không chắc chắn tại sao điều này đã bị hạ cấp. Thông tin về đích tải xuống không thành công là hữu ích.
Alex Coventry

~/.vagrant.d/boxeskhông bao giờ lưu trữ tệp .box, chỉ là nội dung của nó. ~/.vagrant/tmpđược sử dụng để lưu trữ tạm thời .box trong khi tải xuống nhưng bị xóa khi cài đặt trong Vagrant.
Luke Peterson

Dòng thứ ba (dành cho Windows) phải là%userprofile%\.vagrant.d\boxes
J. Scott Elblein

Câu trả lời này dành cho trường hợp bạn thực sự quan tâm đến dung lượng ổ cứng.
kiltek

45

Để thay đổi Đường dẫn, bạn có thể đặt Đường dẫn mới thành Biến môi trường có tên: VAGRANT_HOME

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

Điều đó có thể tốt nếu bạn muốn có những hình ảnh mơ hồ trên một ổ cứng khác.

Thông tin thêm ở đây trong Tài liệu: http://docs.vagrantup.com/v2/other/en môial-biến.html


20

Tệp thực tế .boxbị Vagrant xóa sau khi quá trình tải xuống và cài đặt hộp hoàn tất. Như đã đề cập trong các câu trả lời khác, trong khi tải xuống, tệp .box được lưu dưới dạng:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

trong đó tên tệp là 'hộp' theo sau là hàm băm thập lục phân 40 byte. Ví dụ, một tệp tạm thời trên hệ thống của tôi là:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

Theo như tôi có thể nói, tập tin này không bao giờ được lưu với một *.boxphần mở rộng, điều này giải thích tại sao các tìm kiếm ở trên không tìm thấy nó. Có hai cách để lấy tệp hộp thực tế:

  1. Tải xuống tệp .box từ vagrantcloud.com

    1. Tìm hộp bạn quan tâm trên tập bản đồ . Ví dụ: https://atlas.hashicorp.com/ubfox/boxes/trusty64/versions/20150530.0.1
    2. Thay thế tên miền bằng vagrantcloud.com. Vì vậy, https://atlas.hashicorp.com/ubfox/boxes/trusty64/versions/20150530.0.1 trở thành https://vagrantcloud.com/ubfox/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
    3. Thêm /providers/virtualbox.boxvào cuối URL đó. Vì vậy, https://vagrantcloud.com/ubfox/boxes/trusty64/versions/20150530.0.1 trở thành https://vagrantcloud.com/ubfox/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. Lưu tệp .box
    5. Sử dụng .box như bạn muốn, ví dụ, tự lưu trữ nó và chỉ config.vm.box_urlvào URL. HOẶC LÀ
  2. Nhận .box trực tiếp từ Vagrant

    Điều này đòi hỏi bạn phải sửa đổi nguồn ruby ​​để ngăn Vagrant xóa hộp sau khi tải xuống thành công.

    1. Xác định vị trí tệp box_add.rb trong thư mục cài đặt Vagrant của bạn. Trên hệ thống của tôi, nó nằm ở/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. Tìm hàm box_add. Trong box_addhàm, có một khối đọc:

      đảm bảo # Hãy chắc chắn rằng chúng tôi xóa tệp tạm thời sau khi chúng tôi thêm nó, # trừ khi chúng tôi bị gián đoạn, trong trường hợp đó chúng tôi giữ nó xung quanh # để chúng tôi có thể tiếp tục tải xuống sau. if! @doad_interrupted @ logger.debug ("Xóa hộp tạm thời: # {box_url}") bắt đầu box_url.delete nếu box_url cứu Errno :: ENOENT # Không phải là vấn đề lớn, tệp tạm thời có thể không thực sự tồn tại kết thúc

    3. Nhận xét khối này ra.
    4. Thêm một hộp khác bằng cách sử dụng vagrant add box <boxname>.
    5. Đợi nó tải về. Bạn có thể xem nó lưu trong ~/.vagrant.d/tmp/thư mục dưới dạngboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX tập tin.
    6. Đổi tên tập tin thành một cái gì đó hữu ích hơn. Ví dụ mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box.

Tại sao bạn muốn điều này?

Đối với tôi, điều này rất hữu ích để truy xuất tệp .box để nó có thể được lưu trữ trên cơ sở hạ tầng nhanh, cục bộ thay vì tải xuống từ danh mục hộp Atlas của HashiCorp hoặc nhà cung cấp hộp khác .

Đây thực sự nên là một phần của chức năng Vagrant mặc định vì nó có trường hợp sử dụng rất dứt khoát.


Có thể thích, nén hoặc tar các thư mục con trong thư mục hộp để tạo tệp hộp có thể cài đặt không?
ThorSummoner

@ThorSummoner Có, nhưng bạn cũng có thể để Vagrant xử lý nó trong trường hợp đó, ví dụ: thông qua vagrant packagelệnh: docs.vagrantup.com/v2/cli/package.html .
Luke Peterson

15

@Luke Peterson: Có một cách đơn giản hơn để lấy tệp .box.

Chỉ cần truy cập https://atlas.hashicorp.com/boxes/search , tìm kiếm hộp bạn muốn tải xuống. Lưu ý URL của hộp, ví dụ:

https://atlas.hashicorp.com/ ubfox / hộp / trusty64 / phiên bản / 20150530.0.1

Sau đó, bạn có thể tải xuống hộp này bằng URL như thế này:

https://vagrantcloud.com/ ubfox / hộp / trusty64 / phiên bản / 20150530.0.1 /providers/virtualbox.box

Tôi đã thử và tải thành công tất cả các hộp tôi cần. Mong rằng sự giúp đỡ.


Đây là một phát hiện tuyệt vời! Cảm ơn bạn. ;)
Luke Peterson

Liên kết hiện bị hỏng - cần được thay thế bằng: app.vagrantup.com .
RtmY

6

Trên Windows, vị trí có thể được tìm thấy ở đây. Tôi đã không tìm thấy bất kỳ tài liệu nào trên internet về điều này và điều này ngay lập tức không rõ ràng đối với tôi:

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


Liệu% userprofile% \. Vagrant.d \ box có hoạt động không? % userprofile% mở rộng thành c: \ users \ {tên người dùng}
TamusJRoyce

2

Ngoài

Mac:
~/.vagrant.d/

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

Bạn phải xóa các tệp trong VirtualBox / OtherVMprovider để bắt đầu sạch.


0

Trên Windows 10 với Vagrant 2.2.2 , việc đặt biến môi trường VAGRANT_HOMEsẽ đảm bảo các hộp được tải xuống thư mục con của thư mục được chỉ định choVAGRANT_HOME .

Trong trường hợp của tôi, tôi đặt VAGRANT_HOMEđể e:\vagrant_home, và các hộp được lưu trữ dướie:\vagrant_home\boxes .

Điều này làm việc cho tôi.

Đó là nơi các hộp được lưu trữ. Các máy ảo đang được tạo trong thư mục được cấu hình trong Hộp ảo. Để đặt thư mục lưu trữ VirtualBox VM, hãy đi tới : VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.