2

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

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

4

2 回答 2

0

不知道你是怎么走到现在的,但我刚刚完成了让 SiriProxy 从头开始​​在 RPi 上运行,没有太多麻烦。我遇到的唯一问题是已知的 CFPropertyList 崩溃,有一个已知的修复方法。我从头开始记录了所有步骤,包括 CFPropertyList 修复的帖子。

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

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

猫王

于 2012-12-31T03:34:35.450 回答
0

我们会通过它,但这里有一些事情可以消除可能的贡献者。

确保连接以太网并
在启动时保持连接 - 如果在启动期间未连接以太网,RPi 将不会配置以太网。
- 如果在引导期间未连接或在引导后断开连接,则默认 RPi 接口文件不包含使以太网重新启动的行。 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

确保 /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 重定向不是一个选项

于 2013-01-04T06:14:49.307 回答