Mac下vagrant橋接以太網(wǎng)無(wú)法啟動(dòng)虛擬機(jī)解決方案

一、開(kāi)發(fā)環(huán)境

系統(tǒng):OSX 10.10.5
vagrant版本:vagrant1.7.4
虛擬機(jī)box:vagrant-centos-6-7.box
本人使用vagrant搭建了centOS6.7虛擬機(jī)開(kāi)發(fā)環(huán)境,用作web開(kāi)發(fā)。mac電腦選用公司的網(wǎng)線上網(wǎng),也就是使用網(wǎng)卡“en0: 以太網(wǎng)”。
但最近碰到一個(gè)棘手的問(wèn)題。
注:關(guān)于vagrant搭建可以參考github:https://github.com/astaxie/Go-in-Action/blob/master/ebook/zh/01.1.md

二、問(wèn)題描述

想選擇橋接模式讓虛擬機(jī)上網(wǎng),于是在mac端編輯Vagrantfile,添加 config.vm.network "public_network",并將其他的network設(shè)置注釋掉。vagrant up啟動(dòng)虛擬機(jī)之后,看到如下的輸出:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:

  1. en0: 以太網(wǎng)
  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?
    因本人使用網(wǎng)線上網(wǎng),于是選擇了1) en0: 以太網(wǎng),選擇1之后看到如下輸出(后面還有很多報(bào)錯(cuò)省略了):
    ==> 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:inblock in initialize'
    from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb:28:in `map'

三、解決問(wèn)題

仔細(xì)查看報(bào)錯(cuò)信息:

/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、看到上面的報(bào)錯(cuò)我是崩潰的,在google和百度找了很久,沒(méi)找到答案。經(jīng)過(guò)幾番測(cè)試,我發(fā)現(xiàn)只有選擇1) en0: 以太網(wǎng)才會(huì)報(bào)類(lèi)似的錯(cuò)誤,選擇其他的選項(xiàng)時(shí),雖然連不聯(lián)網(wǎng),但是不會(huì)報(bào)這樣的錯(cuò)。我懷疑可能是編碼問(wèn)題!
2、仔細(xì)查看第一行報(bào)錯(cuò)“subprocess.rb:28:in `encode': "/xE4" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)”??梢钥闯鼍褪蔷幋a轉(zhuǎn)換問(wèn)題了。
3、按照?qǐng)?bào)錯(cuò)信息,找到文件/opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/util/subprocess.rb
4、vim這個(gè)文件,找到第28行可以看到
1@command = @command.map { |s| s.encode(Encoding.default_external) }
以上是Ruby語(yǔ)法,本人也不懂ruby,剛開(kāi)始束手無(wú)策,google了一下ruby編碼轉(zhuǎn)換的問(wèn)題,嘗試把上面這行改動(dòng)了一下,改為以下內(nèi)容:
1@command = @command.map { |s| s.force_encoding('UTF-8') }
注意:不知道ruby對(duì)空格要求嚴(yán)不嚴(yán)格,改動(dòng)后的代碼兩邊的大括號(hào)保留了空格!
5、退出保存,重新vagrant up啟動(dòng)虛擬機(jī),再次選擇“1) en0: 以太網(wǎng)”發(fā)現(xiàn)虛擬機(jī)正常啟動(dòng)!問(wèn)題得到了解決

本文轉(zhuǎn)載自:http://www.th7.cn/system/mac/201511/141081.shtml

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容