【问题标题】:Raspberry Pi Installation of SiriProxy: Error on installing Eventmachine 1.0.0 Ruby GemRaspberry Pi 安装 SiriProxy:安装 Eventmachine 1.0.0 Ruby Gem 时出错
【发布时间】:2013-01-04 14:56:37
【问题描述】:

我是 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

如果有人有任何建议,我将不胜感激,正如我所说,我对此并不陌生,因此对复杂术语的解释会有所帮助。 :)

编辑:好的,我已经能够通过在 /root/SiriProxy/bin/ 目录中运行“bundle”来解决这个错误。这恰好安装了 SiriProxy 所需的所有 gem。运行“ruby siriproxy server”返回:

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#

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

【问题讨论】:

  • Thread 解决了我原来的问题,尽管出现了一个特定于 SiriProxy 的新问题。用信息更新了原始问题。
  • 我想你忘了从教程开始运行命令 14..
  • 运行siriproxy gencerts确实生成了必要的文件,谢谢,但是通过我的iPhone连接到服务器后,我什至还没说什么就弹出错误:link

标签: ruby gem raspberry-pi


【解决方案1】:

我们会解决这个问题,但这里有一些事情可以消除可能的贡献者。

确保连接以太网并在启动时保持连接
- 如果在启动过程中未连接以太网,RPi 将不会配置以太网。
- 如果在引导期间未连接或在引导后断开连接,则默认 RPi 接口文件不包含使以太网重新启动的行。 auto eth0

在知道 RPi 应该使用哪个地址后,尝试使用 ping 命令从 RPi 获得响应 ping xxx.xxx.xxx.xxx

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

auto eth0
iface eth0 inet dhcp

重启树莓派

重启后,确定您的路由器分配的 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

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

关闭您 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 重定向不是一个选项

【讨论】:

  • 不确定它是做什么的,但它有效。非常感谢您的帮助,您一直很有耐心。再次感谢! ^_^
  • 很高兴一切顺利。我最近做的两件事是,更新了我的 RPi 上的固件并调整了 /boot/config.txt 文件以尽可能使用 GPU 的最小 RAM gpu_mem=16,因为我将它作为无头系统运行。
【解决方案2】:

不确定您是如何到达现在的位置的,但我刚刚完成了从头开始在 RPi 上运行 SiriProxy 并没有太多麻烦。我遇到的唯一问题是已知的 CFPropertyList 崩溃,有一个已知的修复方法。我从头开始记录了所有步骤,包括 CFPropertyList 修复的帖子。

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

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

猫王

【讨论】:

  • 好吧,我从 SD 卡中删除了三个分区,将 Wheezy 重新安装到 SD 卡上,扩展分区以填充卡 (32GB),然后按照每一步在你的 git 上添加一个“T”。当我在 SiriProxy 目录中运行 siriproxy 服务器时,我得到了熟悉的“在端口 443SiriProxy 上启动 SiriProxy 已启动并正在运行..”然后我将 DNS 设置更改为 Pi 的 IP 地址后转到我的 iPhone,然后说“测试 Siri 代理”,然后得到通常的 Siri:“等等,这是一个测试吗?” Pi 的屏幕上没有任何反应,按下“Ctrl+C”后,我收到以下消息:pastebay.net/1169447
  • 我假设您在手机上安装了证书。您还需要配置您的路由器以执行透明 DNS 重定向或安装 DNSMASQ 并进行适当的调整。众所周知,即使连接到 Wifi,Siri 也会通过蜂窝连接泄漏。关闭蜂窝数据。有时我也不得不切换飞行模式。试试看吧。
  • 不要忘记 SiriProxy CFPropertyList 修复,它已发布到操作说明:gist.github.com/4409751
  • 我不知道该怎么办。我打开了飞行模式和wifi,更改了DNS地址。没用。我尝试了 CFPropertyList 修复,即使该错误没有显示它存在和问题的迹象,并且启动服务器显示相同的问题。我已经编辑了/etc/dhcp/dhclient.conf,启动了服务器,什么也没有。我不相信这是路由器问题,因为我之前在 Windows 和 ubuntu 的双启动上运行过 SiriProxy,效果很好。也许这是必须配置 raspberrypi 的特定内容?我很茫然。
  • 我假设您在编辑后重新启动了 DNSMASQ。试试我预装了 Siriproxy 的 RPi 映像:sourceforge.net/projects/siriproxyrpi 如果您不使用 dd-wrt ​​透明重定向,则必须安装和配置 DNSMASQ。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
相关资源
最近更新 更多