尝试使用Vagrant+Docker在树莓派上创建虚拟环境并运行Homebridge,但不幸以失败告终的经历

首先

因为这是一个失败的故事,所以我不知道它是否有用,也不能保证。但是,总体上我成功地运行了Raspbian Jessie。

经历

我在尝试着如何搭建Homebridge的开发环境,但手边没有多余的SD卡,于是开始考虑在虚拟环境中进行是否可行呢?

前提 – premise

我对 Vagrant 和 Docker 都不太了解,或者说我并不太懂它们。稍微接触了一下后才有点学习。

我想做的事情

    • Raspberrypiをmac上でエミュレートしたい

 

    開発環境の構築をできるかテストしたい

做法

起初我在想能否直接使用docker-machine在Raspbian上运行,然后我在我的Mac终端上执行了docker run -ti resin/rpi-raspbian bash,但出现了错误,所以我搜索了一下并参考了这个链接。

我选择了 Docker 的镜像 resin/rpi-raspbian。

    1. 流浪者

安装vagrant:brew install vagrant

创建存放vagrant文件的文件夹:mkdir raspbian-docker; cd raspbian-docker

使用vagrant在debian/jessie64上创建虚拟环境:vagrant init debian/jessie64

启动虚拟环境:vagrant up

通过ssh连接虚拟环境:vagrant ssh

使用Docker在虚拟环境中运行

安装QEMU:sudo apt-get install qemu-user-static

在虚拟空间中安装Docker:sudo curl https://get.docker.com/ | sh

在vagrant上运行Docker:docker run -ti –volume /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static resin/rpi-raspbian bash

成就的事情 jiù de shì

根据看起来,Raspbian的安装似乎很顺利,也成功运行了。

绊倒的地方

我想要进行与Homebridge相关的开发,所以我安装了所有必需的东西(参考了Homebridge的安装方法),然后运行了$ homebridge。

/usr/local/lib/node_modules/hap-nodejs/node_modules/mdns/lib/advertisement.js:56
  dns_sd.DNSServiceRegister(self.serviceRef, flags, ifaceIdx, name,
         ^

Error: dns service error: unknown
    at Error (native)
    at new Advertisement (/usr/local/lib/node_modules/hap-nodejs/node_modules/mdns/lib/advertisement.js:56:10)
    at Object.create [as createAdvertisement] (/usr/local/lib/node_modules/hap-nodejs/node_modules/mdns/lib/advertisement.js:64:10)
    at Advertiser.startAdvertising (/usr/local/lib/node_modules/hap-nodejs/lib/Advertiser.js:43:30)
    at Bridge.Accessory._onListening (/usr/local/lib/node_modules/hap-nodejs/lib/Accessory.js:539:20)
    at emitOne (events.js:77:13)
    at HAPServer.emit (events.js:169:7)
    at HAPServer._onListening (/usr/local/lib/node_modules/hap-nodejs/lib/HAPServer.js:190:8)
    at emitOne (events.js:77:13)
    at EventedHTTPServer.emit (events.js:169:7)

在遇到那个错误后,我尝试了一些搜索和其他的办法,但是没有解决,最后我放弃了。

就算Homebridge的安装

apt-get update
apt-get install git make
apt-get install wget
apt-get install python
apt-get install build-essential g++
wget https://nodejs.org/dist/v4.3.2/node-v4.3.2-linux-armv6l.tar.gz 
tar -xvf node-v4.3.2-linux-armv6l.tar.gz 
cd node-v4.3.2-linux-armv6l
sudo cp -R * /usr/local/
node -v
npm -v
apt-get install libavahi-compat-libdnssd-dev
npm config get unsafe-perm
npm config set unsafe-perm true
npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
exit
sudo docker restart [dockername]

我在考虑接下来要做什么

如果我有时间来调查,似乎除了在vagrant上部署Linux之外,还可以直接在Mac上使用QEMU创建Raspbian的虚拟环境。我想我可以参考一下这个方法,然后试一试。

广告
将在 10 秒后关闭
bannerAds