2014-10-18 27 views
10

Tôi đã tải xuống hộp Homestead thrid thời gian trong tháng này bằng cách sử dụng hộp lang thang thêm laravel/homestead. Tôi hiện không có quyền truy cập vào internet nhanh nên nó khá khó chịu để tải xuống mọi lúc. Có cách nào để sử dụng gói tải xuống một lần nữa và bao gồm các gói địa phương trong âm hộ, nó dosent vấn đề nếu dự án hoặc vị trí đồng bộ được bảo tồn hay không.Làm thế nào để sao chép hộp âm đạo để tái sử dụng lại

Tôi đang sử dụng máy Ubuntu nếu có vấn đề.

Cập nhật: Tôi cần hộp Homestead đã tải xuống để máy của tôi bị hỏng hoặc tôi phải cài đặt ở nơi khác mà không có/kết nối internet chậm, tôi có thể thực hiện tại địa phương.

+1

Thông thường khi bạn sử dụng 'hộp add' khi bạn chỉ có thể sử dụng 'vagrant init ' để tạo một cá thể mới với cùng một hộp cơ sở. Tại sao bạn không làm điều đó? – benbot

+1

@thecodethinker Có lẽ tôi không thể giải thích, tôi cần hộp Homestead đã tải xuống để máy của tôi bị hỏng hoặc tôi phải cài đặt ở nơi khác mà không có kết nối internet chậm, tôi có thể thực hiện tại địa phương. –

Trả lời

11

Một cách tốt hơn để làm điều đó là:

  1. Chỉ cần đi đến thư mục mà bạn đã thực hiện các Vagrant init
  2. Thực hiện vagrant package --output mynew.box

Bạn sẽ nhận được hộp đóng gói vào mynew tệp .box mà bạn thậm chí có thể sao chép và chia sẻ với các nhà phát triển khác của mình. Điều này là khá hữu ích trong quan điểm của tôi, nơi bạn có tốc độ internet chậm hơn.

13

Rất dễ.

Để đóng gói hộp hiện được cài đặt của bạn trở lại vào tệp .box (trong khi vẫn cài đặt trên hệ thống của bạn), hãy sử dụng vagrant box list để tìm tên hộp, nhà cung cấp và phiên bản.

Sau đó, sử dụng vagrant box repackage <name> <provider> <version> và nó sẽ gói nó thành tệp có tên package.box.

Hy vọng điều này đã giúp!

2

Chỉ để bổ sung @thecodethinker câu trả lời.

Khi tôi áp dụng các lệnh gợi ý:

vagrant box list

vagrant box repackage <name> <provider> <version>

Sau đây xảy ra:

Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Box 'laravel/homestead' could not be found. Attempting to find and install... 
default: Box Provider: virtualbox 
default: Box Version: >= 0.4.0 
==> default: Loading metadata for box 'laravel/homestead' 
default: URL: https://atlas.hashicorp.com/laravel/homestead 
==> default: Adding box 'laravel/homestead' (v0.5.0) for provider: virtualbox 
default: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.5.0/providers/virtualbox.box 

Như bạn có thể thấy, nó không nhận ra package.box và đang cố tải xuống từ internet. Nếu bạn nhìn kỹ hơn bạn có thể thấy rằng đang tìm kiếm box version >= 0.4.0.

Đây là kết quả của vagrant box list:

laravel/homestead (virtualbox, 0)

Bởi vì hộp đã được bổ sung bằng tay. Siêu dữ liệu hộp không có sẵn và theo mặc định, nó sẽ đặt phiên bản thành 0.

Để khắc phục vấn đề này, tạo ra một metadata.json:

{ 
"name": "laravel/homestead", 
    "versions": [{ 
     "version": "0.4.0", 
     "providers": [{ 
      "name": "virtualbox", 
      "url": "file://package.box" 
     }] 
    }] 
} 

Bởi vì bây giờ chúng tôi có một siêu dữ liệu thích hợp, bạn có thể làm:

vagrant box add metadata.json

Các vấn đề liên quan