资讯专栏INFORMATION COLUMN

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

Aklman / 1069人阅读

摘要:电脑选用公司的网线上网,也就是使用网卡以太网。经过几番测试,我发现只有选择以太网才会报类似的错误,选择其他的选项时,虽然连不联网,但是不会报这样的错。可以看出就是编码转换问题了。

一、开发环境

系统: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...

二、问题描述

想选择桥接模式让虚拟机上网,于是在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://www.ucloud.cn/yun/33273.html

相关文章

  • 搭建Linux工作环境之VirtualBox

    摘要:序最近需要搭建多虚拟机模拟集群来运行平台我又重新翻开了之前的使用笔记重新整理后发了上来搭建虚拟机主要使用和两个软件通常情况如果建立服务器环境的虚拟机我使用否则使用考虑到任务主要是运行平台并不需要桌面环境要尽可能节省资源又考虑到的开源免费跨平 showImg(https://segmentfault.com/img/bVxR0K); live with scope 序 最近需要搭建多虚拟...

    yexiaobai 评论0 收藏0
  • vagrant尝鲜及docker搭建nignx与reids

    摘要:启动虚拟机,命令关闭虚拟机,查看运行状态。此外如果修改了,也是执行该命令重新创建容器。该命令会同时会在前台启动容器并打印容器内的控制台日志,方便查看是否启动成功。安装通过部署也是十分简单,不用纠结版本和依赖及配置的问题。 虚拟化、容器化是这几年来十分流行的一个理念,它使用隔离的手段,将不同服务的依赖、配置等隔离开来,大大降低了管理成本及维护负担。vagrant是一款抽象层次更高的虚拟环...

    jubincn 评论0 收藏0
  • vagrant尝鲜及docker搭建nignx与reids

    摘要:启动虚拟机,命令关闭虚拟机,查看运行状态。此外如果修改了,也是执行该命令重新创建容器。该命令会同时会在前台启动容器并打印容器内的控制台日志,方便查看是否启动成功。安装通过部署也是十分简单,不用纠结版本和依赖及配置的问题。 虚拟化、容器化是这几年来十分流行的一个理念,它使用隔离的手段,将不同服务的依赖、配置等隔离开来,大大降低了管理成本及维护负担。vagrant是一款抽象层次更高的虚拟环...

    Vicky 评论0 收藏0
  • mac os 环境配置VMware Fusion虚拟的互通网络

    摘要:仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。广播地址是专门用于同时向网络中所有工作站进行发送的一个地址。 安装环境 本文基于macOS Sierra 10.12.6系统为例虚拟机应用VMware Fusion 10.1.3系统Linux redhat镜像rhel-server-7.4-x86_64-dvd.iso VMware Fusion连接模式 v...

    sunsmell 评论0 收藏0
  • Vagrant 系列一:安装配置

    摘要:启动,输入验证安装是否成功,如果出现版本信息表示成功。安装注意官方推荐的是。如果上述命令执行失败,需要确认是否是最新版本。和配置文件中的保持一致在目录下运行命令启动这个提示是冲突,更改即可。再执行,首次启动会有一个初始化过程查看状态。 如果是工程化开发,走正规军路子还是推荐使用 Homestead。下载Vagrant。官方下载地址 这里下载的是Windows版本的安装包。直接点击安装即...

    liuyix 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<