Tệp thực tế .box
bị 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 *.box
phầ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ế:
Tải xuống tệp .box từ vagrantcloud.com
- 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
- 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 .
- Thêm
/providers/virtualbox.box
và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
- Lưu tệp .box
- Sử dụng .box như bạn muốn, ví dụ, tự lưu trữ nó và chỉ
config.vm.box_url
vào URL. HOẶC LÀ
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.
- 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
- Tìm hàm box_add. Trong
box_add
hà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
- Nhận xét khối này ra.
- Thêm một hộp khác bằng cách sử dụng
vagrant add box <boxname>
.
- Đợ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.
- Đổ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.
sudo find / -name lucid32.box
.