2013-07-25 43 views
43

Tôi đã nhập hộp exact32, sau đó cài đặt một số gói và dữ liệu khác trên máy ảo. Kế hoạch của tôi là sau đó đóng gói lại nó thành một hộp, để lưu vào việc cung cấp phức tạp khi chia sẻ.Vagrant "VM không được tạo." khi cố gắng tạo hộp từ VM hiện có

Tuy nhiên.

vagrant package --base dev-vm --output /box/vm.box 

Luôn trả

[dev-vm] VM not created . Moving on 

cấu trúc thư mục của tôi là:

-dev-vm 
    --.vagrant 
    --Logs 
    --box.ovf 
    --box-disk1.vmdk 
    --dev-vm_13345342.vbpx 
    --metadata.json 
    --Vagrantfile 

Ive

set VAGRANT_LOG=debug 

nào cho thấy không có thông tin thêm về whats going on.

Windows 7 sử dụng Cygwin

UPDATE:

export VAGRANT_LOG=debug 

cho Cygwin cài đặt gỡ lỗi đăng nhập.

sau đó tôi nhận được

DEBUG subprocess: Waiting for process to exit. Remaining to timeout: 32000 
DEBUG subprocess: Exit status: 0 
INFO warden: Calling action: #<Vagrant::Action::Builtin::Call:0x2abb800> 
INFO runner: Running action: #<Vagrant::Action::Builder:0x2695920> 
INFO warden: Calling action: #<VagrantPlugins::ProviderVirtualBox::Action::Created:0x267c078> 
INFO runner: Running action: #<Vagrant::Action::Warden:0x2ac6c48> 
INFO warden: Calling action: #<VagrantPlugins::ProviderVirtualBox::Action::MessageNotCreated:0x2ac6c00> 
INFO interface: info: VM not created. Moving on... 
+0

lý do giảm giá? – Kiksy

+0

Khi tôi đóng gói một hộp cung cấp VirtualBox, tôi phải sử dụng tên hộp cụ thể với mã thời gian đính kèm, như 'lucid_1372711888'. – bfitzpatrick

+0

@bfitzpatrick. Điều đó là vậy đó. Vì vậy: gói vagrant --base dev-vm_13743534 --output /box/vm.box đã hoạt động. Bạn có muốn thêm câu trả lời này làm câu trả lời để tôi có thể chấp nhận không? – Kiksy

Trả lời

69

Khi bạn đóng gói một hộp, tên hộp phải là tên máy cụ thể mà bạn có thể nhận được từ VirtualBox (ví dụ lucid_1372711888). Chỉ cần thực hiện lệnh sau trong cmd:

vboxmanage list vms 

Lưu ý rằng "vboxmanage" trước đó phải được thêm vào biến PATH. Xem here cách thực hiện điều đó.

Cũng lưu ý rằng tên maschine ảo không được chứa dấu cách. Nếu không nó sẽ không được công nhận bởi "gói vagrant" lệnh. Ví dụ:

vagrant package --base win7_vbox_base --output win7_base.box #CORRECT 
------------------------------------------------------------------------ 
vagrant package --base win7 vbox base --output win7_base.box #INCORRECT 
+15

Bạn có thể tìm thấy tên hộp thông qua: '$ VBoxManage list vms'. Cũng lưu ý rằng điều này bị hỏng trong Vagrant 1.4.2: https://groups.google.com/forum/#!msg/vagrant-up/HNXKTBv0-Jw/-yIbhNHCz10J – earldouglas

+1

Hãy nhớ rằng bất thường cho chương trình Windows (do tôi nghĩ về nguồn gốc của nó trong Linux), nó có phân biệt chữ hoa chữ thường, vì vậy bạn có thể gặp lỗi nếu trường hợp không khớp chính xác: 'lucid_1372711888'! =' Lucid_1372711888' – GMasucci

+1

Lưu ý rằng tên hộp có phân biệt chữ hoa chữ thường – 79E09796

5

Nếu bạn đang ở trong thư mục chứa Vagrantfile của bạn, bạn cũng có thể chỉ đơn giản là chạy:

vagrant package --output your-box-name.box 

Những hình ảnh dưới đây cho thấy nội dung của file .box tạo ra với lệnh này:

Unpacket .box

+0

Nếu bạn làm điều đó, thì .box được tạo chỉ bao gồm tệp .vmdk - nó thiếu tất cả các công cụ cấu hình (.ovf và Vagrantfile nếu bạn sử dụng tùy chọn --vagrantfile để đóng gói). – foobarbecue

+0

@foobarbecue - Tôi đã sử dụng lệnh đó trong quá khứ và nó đóng gói mọi thứ. Tôi đã thêm một ảnh chụp màn hình của hộp thư chưa được đóng gói vào câu trả lời của tôi. –

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