如何修复缺失的 libudev.so.0 以便 Chrome 重新启动?

k0p*_*kus 27 64-bit google-chrome 13.04 13.10

尝试启动 chrome 在命令行上产生以下错误:

/opt/google/chrome/chrome: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

该错误首先出现在 Ubuntu 13.04 中,我尝试清除并重新安装 Chrome。升级到 Ubuntu 13.10 后它仍然存在。

k0p*_*kus 36

正如 Gilles 所指出的,这种方法会导致不良行为。请先尝试他的解决方案。如果它对您不起作用并且您了解这可能导致静默数据损坏的含义,您可以执行以下操作:

假设是 64 位系统,可以通过以下方式创建缺少的符号链接:

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.3.5 /usr/lib/libudev.so.0
Run Code Online (Sandbox Code Playgroud)

对于 Ubuntu 18:

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.6.9 /usr/lib/libudev.so.0
Run Code Online (Sandbox Code Playgroud)

对于 32 位系统:

sudo ln -s /lib/i386-linux-gnu/libudev.so.1.3.5  /usr/lib/libudev.so.0
Run Code Online (Sandbox Code Playgroud)

您可能需要检查您的本地版本的 libudev。

  • 这是一个坏主意:它适用于 Chrome,但它可能会破坏不是来自 Ubuntu 的其他程序——而不是收到错误消息,您可能会得到静默数据损坏。 (2认同)

Gil*_*il' 17

如果 Ubuntu 从 ?12.10 升级到 ?13.04 后 Chrome 没有启动,请打开终端并运行以下命令:

sudo dpkg-reconfigure google-chrome-stable
Run Code Online (Sandbox Code Playgroud)

解释如下。


至少对于从 28 到 37 的 Chrome 版本,Chrome 二进制文件可以使用系统中存在libudev.so.0libudev.so.1存在的任何一个。通过对Chromium/Chrome 问题 226002(2013 年 4 月进入不稳定频道)的修复,安装程序确定要使用哪个。二进制引用libudev.so.0;如果未找到,安装程序会在系统上创建从/opt/google/chrome/libudev.so.0到 的符号链接。libudev.so.1libudev.so.0

请注意,在/usr/lib. 当新版本不兼容时,库中的主要版本号会发生变化。创建此符号链接对 Chrome 很有效,因为它仅使用版本 0 和版本 1 之间兼容的功能。如果您强制其他应用程序使用错误的版本运行,它们可能会崩溃或产生损坏的数据。

Chrome 包使用的方法在大多数情况下都很好,但它仍然是一个肮脏的 hack,并且它有一个限制。如果在libudev0安装 Chrome 后卸载了该软件包(升级 Ubuntu 时可能会发生这种情况),则 Chrome 仍将设置为使用,libudev.so.0但该文件将不再可用。要解决此问题,请再次运行安装脚本,这次检测到该脚本libudev.so.0不可用,因此应创建符号链接以供使用libudev.so.1。您可以通过dpkg-reconfigure google-chrome-stable以 root 身份运行来重新运行安装脚本。