Raspberry Pi安装SiriProxy:安装Eventmachine 1.0.0 Ruby Gem时出错

时间:2012-12-29 02:58:51

标签: ruby gem raspberry-pi

我是Raspberry Pi和Linux的新手,想安装SiriProxy。

我按照本指南中的步骤操作:http://www.idownloadblog.com/2011/12/09/how-to-install-siri-proxy-tutorial-video/

完成所有步骤后,我遇到一个错误,指出它无法在当前机器上找到eventmachine。

当我以root用户身份运行gem install eventmachine -v 1.0.0时,它返回:

    root@raspberrypi:/var/lib/gems/1.9.1/gems# gem install eventmachine
    Building native extensions.  This could take a while...
    ERROR:  Error installing eventmachine:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby1.9.1 extconf.rb
    /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from extconf.rb:2:in `<main>'


    Gem files will remain installed in /var/lib/gems/1.9.1/gems/eventmachine-1.0.0 for inspection.
    Results logged to /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/ext/gem_make.out

如果有人有任何建议我会非常感激,并且正如我所说我是新手,所以对复杂术语的解释会有所帮助。 :)

编辑:好吧,我已经能够通过运行&#34;捆绑&#34;来解决这个错误。在/ root / SiriProxy / bin /目录中。这恰好安装了SiriProxy所需的每一个宝石。运行&#34; ruby​​ siriproxy服务器&#34;退回:

root@raspberrypi:~/SiriProxy/bin# ruby siriproxy server
Starting SiriProxy on port 443..
SiriProxy up and running.

虽然从iPhone发送语音数据包(5,非越狱,没有VPN,在同一个WIFI网络上)但是我收到了这个错误:

Create server for iPhone connection
/var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/em/connection.rb:411:in `block in start_tls': Could not find /root/.siriproxy/server.passless.key for start_tls         (EventMachine::FileNotFoundException)
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/em/connection.rb:409:in `each'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/em/connection.rb:409:in `start_tls'
    from /root/SiriProxy/lib/siriproxy/connection/iphone.rb:15:in `post_init'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/em/connection.rb:58:in `block in new'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/em/connection.rb:49:in `instance_eval'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/em/connection.rb:49:in `new'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:1462:in `event_callback'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run_machine'
    from /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run'
    from /root/SiriProxy/lib/siriproxy.rb:16:in `initialize'
    from /root/SiriProxy/lib/siriproxy/command_line.rb:96:in `new'
    from /root/SiriProxy/lib/siriproxy/command_line.rb:96:in `start_server'
    from /root/SiriProxy/lib/siriproxy/command_line.rb:85:in `run_server'
    from /root/SiriProxy/lib/siriproxy/command_line.rb:37:in `initialize'
    from siriproxy:6:in `new'
    from siriproxy:6:in `<main>'

检查相关目录(/root/.siriproxy/)后,我发现只有配置文件:

root@raspberrypi:~/SiriProxy/bin# cd /root/.siriproxy/
root@raspberrypi:~/.siriproxy# ls
config.yml
root@raspberrypi:~/.siriproxy# cd /home/pi/.siriproxy/
root@raspberrypi:/home/pi/.siriproxy# ls
config.yml

在文件系统中搜索返回的文件没有结果:

root@raspberrypi:/home/pi/.siriproxy# find / -name server.passless.key
root@raspberrypi:/home/pi/.siriproxy#

任何人都知道我在哪里可以找到这些文件/解决此错误?

2 个答案:

答案 0 :(得分:0)

不确定你是如何到达目的地的,但我刚刚完成了从头开始在RPi上运行SiriProxy而没有太多麻烦。我唯一的问题是已知的CFPropertyList崩溃,有一个已知的修复程序。我从头开始记录了所有步骤,包括CFPropertyList修复的帖子。

https://github.com/plamoni/SiriProxy/wiki/Installation-How-Tos

如果是我,我会从头开始从新的RPi SDC图像开始。在尝试使用嵌入式设备之前,首先尝试在VM上运行SiriProxy也可能有所帮助。

埃尔维斯

答案 1 :(得分:0)

我们将通过它,但这里有一些东西可以消除可能的贡献者。

确保连接以太网并在启动时保持连接
- 如果在启动期间未连接以太网,则RPi将不配置以太网 - 如果在引导期间未连接连接或在引导后断开连接,则默认RPi interfaces文件不包括用于重新启动以太网的线路。 auto eth0

尝试使用ping命令,一旦知道应该使用哪个地址,就可以从RPi获得响应 ping xxx.xxx.xxx.xxx

将/ etc / network / interfaces文件更改回使用DHCP
- 注释静态地址线
- 取消注释DHCP行看起来像这样

auto eth0
iface eth0 inet dhcp

重新启动RPi

重新启动后,确定路由器指定的IP地址
- 类型
ifconfig
- 示例

eth0     Link encap:Ethernet  HWaddr 00:11:22:33:44:55   
             inet addr:192.168.69.97  Bcast:192.168.69.255  Mask:255.255.255.0 
             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
             RX packets:7015 errors:0 dropped:0 overruns:0 frame:0 
             TX packets:4236 errors:0 dropped:0 overruns:0 carrier:0 
             collisions:0 txqueuelen:1000  
             RX bytes:861497 (841.3 KiB)  TX bytes:849687 (829.7 KiB)

在/etc/dnsmasq.conf默认文件中添加一行。
- 例子 address=/guzzoni.apple.com/192.168.69.97

重启DNSMASQ
- 类型 sh /etc/init.d/dnsmasq restart

确保您的iOS设备上安装了/root/.siriproxy/ca.pem文件

关闭iOS设备上的移动数据连接,并将其关闭

切换飞行模式,至少停留5秒

在您的iOS设备上

,告诉它忘记您的Wifi连接

重新连接到您的Wifi SSID

连接后,点击wifi连接的详细信息页面,只更改DNS地址,指向上面确定的RPI地址
- 更改后,点击后退按钮,再次点按详细信息以查看DNS设置是否保留 - 您想要切换飞行模式并确认DNS设置再次保留。

有时需要几个方法才能让手机第一次连接到SiriProxy
- 几乎就像iPhone在实际尝试wifi连接之前必须首先超过蜂窝连接 - 如果第一次尝试没有立即开始连接,请给它几秒钟,退出Siri界面并重新启动Siri - 我认为ios 6.0.2创造的问题多于解决的问题,因为之前并没有这么麻烦。

如果您此时正常工作,则需要尝试配置/ etc / network / interfaces文件以使用静态IP地址
- 注释掉DHCP线路 - 示例(确保将列排成一行并按顺序排列)

auto eth0 
iface eth0 inet static 
       address 192.168.69.97 
       netmask 255.255.255.0 
       broadcast 192.168.69.255 
       network 192.168.69.0 
       gateway 192.168.69.1

如果不起作用,那么ISP(U-Verse)可能不喜欢您使用静态IP地址。

如果您的路由器是由ATT提供的,那么dd-wrt透明DNS重定向不是一个选项