วันอังคาร, มกราคม 27, 2558

แก้ปัญหาสร้าง base box ไม่ได้ ด้วย vagrant 1.7.1 บน OSX Yosemite (Workaround)

บันทึก แก้ปัญหา vagrant 1.7.1 บน OSX Yosemite สร้าง vagrant base box ไม่ได้

พอ execute คำสั่งแบบนี้

$ vagrant package --basebox trusty64 

เจอ errror keyword แบบนี้ wrong number of arguments (2 for 1) (ArgumentError)

/opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/machine.rb:153:in `action': wrong number of arguments (2 for 1) (ArgumentError)
    from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb:83:in `package_vm'
    from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb:66:in `package_base'
    from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb:42:in `execute'
    from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/cli.rb:42:in `execute'
    from /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/lib/vagrant/environment.rb:301:in `cli'
    from /opt/vagrant/bin/../embedded/gems/gems/vagrant-1.7.1/bin/vagrant:174:in `<main>'

    ตามไปดูที่ github ของ vagrant ณ วันที่เขียนนี้ยังไม่ได้ release ตัวแก้ที่ใช้ได้จริงออกมา, ใช้  vagrant 1.7.2 ก็ยังใช้ไม่ได้นะ

workaround ตอนนี้คือให้ไปแก้ไขไฟล์นี้
/opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb

ใช้ vi แล้วแก้ไข ที่เพิ่มขึ้นมาคือ code ส่วน สีน้ำเงิน

$ sudo vi /opt/vagrant/embedded/gems/gems/vagrant-1.7.1/plugins/commands/package/command.rb

 79           acc["package.#{k}".to_sym] = v
 80           acc
 81         end
 82
 83         vm.action(:package, **opts)

คราวนี้เรียกคำสั่งเพื่อทำการ pack box file ได้แล้ว ไม่มี error อีก

Workaround fixed from github: https://github.com/mitchellh/vagrant/issues/4962

ไม่มีความคิดเห็น :