由于是直接拷贝迁移了 virtualbox 的 虚拟机到 Windows 10 上,vagrant 的虚拟机也一并移了过来。vagrant up 时双手合十还是踩了不少坑:

  1. 一个是在设置 port forward 时报错,...The requested address is not valid in its context. - connect(2) for "0.0.0.0" port 8080 (Errno::EADDRNOTAVAIL)...,参考此 issue 将 host_ip 设置为 localhost 解决:https://github.com/mitchellh/vagrant/issues/8395
  2. 这个坑填上之后,又有另外一个错 ...io.rb:32:in `encode': incomplete "\xA1" on GBK (Encoding::InvalidByteSequenceError)...,参考此文解决:https://laravel-china.org/articles/4082/a-wonderful-problem-encountered-in-the-use-of-vagrant 。我的情况略有不同,并不是 snapshot 名称中有中文,而是 snapshot 的描述中有中文,参考了作者的方法使用 VBoxManage.exe showvminfo <machine uuid> --machinereadable 命令才发现的问题,最后删去中文描述可解决此报错。
  3. 最后一个坑是 vagrant-hostsupdater 插件导致的,改 host 时没权限,按理应该弹 UAC 吧?但是却直接报错了。解决(绕过)方法是先取消 hosts 文件只读,然后修改其权限,给当前用户添加修改权限,正好平时改 hosts 也方便。

结论就是 vagrant 代码貌似不够健壮啊(ruby 也来快糙猛?),另外 HashiCorp 说好的 otto 也偃旗息鼓了,vagrant 还要再战几年?