mac下,vagrant桥接,选择“en0: 以太网”无法启动虚拟机解决方案

一、开发环境

系统:OSX 10.10.5 vagrant版本:vagrant1.7.4 虚拟机box:vagrant-centos-6-7.box 本人使用vagrant搭建了centOS6.7虚拟机开发环境,用作web开发。mac电脑选用公司的网线上网,也就是使用网卡“en0: 以太网”。 但最近碰到一个棘手的问题。 注:关于vagrant搭建可以参考github:https://github.com/astaxie/Go-in-Action/blob/master/ebook/zh/01.1.md

二、问题描述

想选择桥接模式让虚拟机上网,于是在mac端编辑Vagrantfile,添加 config.vm.network "public_network",并将其他的network设置注释掉。vagrant up启动虚拟机之后,看到如下的输出:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) en0: 以太网
2) en1: Wi-Fi (AirPort)
3) en2: Thunderbolt 1
4) en3: Thunderbolt 2
5) p2p0
6) awdl0
7) bridge0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.

default: Which interface should the network bridge to?

因本人使用网线上网,于是选择了1) en0: 以太网,选择1之后看到如下输出(后面还有很多报错省略了):

==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
/opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb:28:in `encode': "\xE4" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb:28:in `block in initialize'
from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb:28:in `map'

三、解决问题

仔细查看报错信息:

/opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb:28:in
 `encode': "\xE4" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

1、看到上面的报错我是崩溃的,在google和百度找了很久,没找到解决方案。经过几番测试,我发现只有选择1) en0: 以太网才会报类似的错误,选择其他的选项时,虽然连不联网,但是不会报这样的错。我怀疑可能是编码问题! 2、仔细查看第一行报错

“subprocess.rb:28:in
 `encode': "\xE4" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)”。

可以看出就是编码转换问题了。 3、按照报错信息,找到文件/opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb 4、vim这个文件,找到第28行可以看到

 @command = @command.map { |s| s.encode(Encoding.default_external) }

以上是Ruby语法,本人也不懂ruby,刚开始束手无策,google了一下ruby编码转换的问题,尝试把上面这行改动了一下,改为以下内容:

@command = @command.map { |s| s.force_encoding('UTF-8') }

注意:不知道ruby对空格要求严不严格,改动后的代码两边的大括号保留了空格! 5、退出保存,重新vagrant up启动虚拟机,再次选择“1) en0: 以太网”发现虚拟机正常启动!问题得到了解决

这个应该属于vagrant的一枚bug!!

转载于:https://my.oschina.net/phpcoder/blog/693870

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值