libudev0
,但是比12.04版本更新的Ubuntu使用的是libudev1
。尽管我相信这个问题在最新版本的Popcorn Time中已经修复了;请参考下面的内容。
假设不兼容性完全是表面上的问题——也就是说,可执行文件链接到了错误的(对于Ubuntu来说)库,但并不依赖于libudev0
和libudev1
之间的任何差异——通过使用十六进制编辑器编辑可执行文件,使其声明与libudev1
的链接,而不是应该可以解决问题。
这里还有另外几个解决方案。
虽然Popcorn Time原版的开发已经停止, 但是其他人正在开发。现在提供32位和64位Linux版本,很可能可以直接在Ubuntu上使用。
所以请确保您正在运行最新版本,除非您有早期版本的特定需求。这本身可能会解决这个问题。
(我尝试了这个方法,在64位Utopic系统上。 Popcorn Time Beta 3.2的64位和32位版本都能够运行;两者都没有这个问题。我只尝试启动程序;我没有测试下载。)
我使用旧版本的Popcorn Time(Beta 0.29)在新版本的Ubuntu上复制了这个问题。然后我测试了这个问题并找到了以下解决方案,它有效。
如果您是Ubuntu系统上的管理员,那么您可以使用sudo命令以root身份运行命令。因此,您可以创建一个指向libudev1的符号链接,并将该链接命名为libudev0。然后,当Popcorn Time尝试使用libudev0时,它将自动无缝地使用libudev。sudo ln -s /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
libudev.so.0
的链接称为libudev.so.1
,因为旧版本的Ubuntu(具体来说是12.04)有libudev.so.0
,而新版本的Popcorn Time需要libudev.so.1
。相比之下,我在这里提供的解决方案是针对在新版本的Ubuntu上运行需要libudev.so.0
的旧版本的Popcorn Time。
~/Popcorn-Time
。运行以下命令:cd ~/Popcorn-Time
ln -s /lib/$(arch)-linux-gnu/libudev.so.1 libudev.so.0
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./Popcorn-Time
ln -s
命令将一个名为libudev.so.0
的符号链接(指向系统的libudev.so.1
)放置在Popcorn-Time
文件夹中。第二个命令会将当前目录添加到LD_LIBRARY_PATH
变量中,并运行Popcorn-Time
。
由于LD_LIBRARY_PATH
不常用且可能不包含任何Popcorn Time运行所需的内容(实际上可能什么都没有),这个命令也可能起作用:
LD_LIBRARY_PATH=. ./Popcorn-Time
env LD_LIBRARY_PATH=/home/username/Popcorn-Time /home/ek/Popcorn-Time/Popcorn-Time
我使用env
,因为应用程序启动器图标通常不支持VARIABLE=value command
语法。通常也不支持~
和环境变量扩展,这就是为什么你必须给出Popcorn Time和你的库符号链接的完整显式名称的原因。
将username
替换为您的实际用户名。(如果Popcorn Time程序文件夹不在您的主文件夹中,请进一步编辑/home/username/Popcorn-Time
的两个实例。)
如果较短的命令LD_LIBRARY_PATH=. ./Popcorn-Time
没有起作用,您可能需要编写一个Shell脚本来为LD_LIBRARY_PATH
分配正确的值,并合并其先前的内容,同时启动Popcorn Time。
我建议将Shell脚本创建在Popcorn Time程序文件夹中,与Popcorn-Time
可执行文件和libudev.so.0
符号链接放在一起。
cd ~/Popcorn-Time # if you're not already there
gedit popcorn-time.sh # if you want you can use a different text editor than gedit
#!/bin/sh
DIR=~/Popcorn-Time
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR $DIR/Popcorn-Time
~/Popcorn-Time
,你可以方便地在脚本的一个地方进行更改:在DIR=
行上。chmod +x popcorn-time.sh
/home/username/Popcorn-Time/popcorn-time.sh
/home/username/Popcorn-Time
替换为实际的Popcorn Time程序文件夹路径。所以如果是~/Popcorn-Time
,只需将username
替换为您的实际用户名。Popcorn-Time
(这是Popcorn Time的可执行文件)。
搜索libudev.
(在GHex中,可以通过编辑 > 查找来进行搜索)。
应该能够找到libudev.so.0
。将其替换为libudev.so.1
(这是库文件,Ubuntu的新版本中有udev)。
在十六进制编辑器中保存文件。(现在可以关闭十六进制编辑器了。)
现在应该能够运行Popcorn Time了。一种方法是在Nautilus(文件浏览器)中右键单击Popcorn-Time
,然后点击运行。