从16.04升级的Ubuntu 18.04无法加载upowerd,找不到libssl.so.1.0.2

从16.04升级的Ubuntu 18.04无法加载upowerd,找不到libssl.so.1.0.2

自从 16.04 作为全新安装发布以来,我运行了它,大约一个月前使用官方升级机制升级到 18.04。我在系统日志中注意到这一点:

Sep 27 17:40:36 yavin systemd[1]: Starting Daemon for power management...
Sep 27 17:40:36 yavin upowerd[836]: /usr/lib/upower/upowerd: error while loading shared libraries: libssl.so.1.0.2: cannot open shared object fil
e: No such file or directory
Sep 27 17:40:36 yavin systemd[1]: upower.service: Main process exited, code=exited, status=127/n/a
Sep 27 17:40:36 yavin systemd[1]: upower.service: Failed with result 'exit-code'.
Sep 27 17:40:36 yavin systemd[1]: Failed to start Daemon for power management.
Sep 27 17:40:36 yavin systemd[1]: upower.service: Service hold-off time over, scheduling restart.
Sep 27 17:40:36 yavin systemd[1]: upower.service: Scheduled restart job, restart counter is at 1.
Sep 27 17:40:36 yavin systemd[1]: Stopped Daemon for power management.
Sep 27 17:40:36 yavin systemd[1]: Starting Daemon for power management...
Sep 27 17:40:36 yavin upowerd[846]: /usr/lib/upower/upowerd: error while loading shared libraries: libssl.so.1.0.2: cannot open shared object file: No such file or directory
Sep 27 17:40:36 yavin systemd[1]: upower.service: Main process exited, code=exited, status=127/n/a
Sep 27 17:40:36 yavin systemd[1]: upower.service: Failed with result 'exit-code'.
Sep 27 17:40:36 yavin systemd[1]: Failed to start Daemon for power management.
Sep 27 17:40:36 yavin systemd[1]: upower.service: Service hold-off time over, scheduling restart.
Sep 27 17:40:36 yavin systemd[1]: upower.service: Scheduled restart job, restart counter is at 2.

所以upowerd找不到libssl.so.1.0.2,果然:

$ ldd -v /usr/lib/upower/upowerd | grep 'not found'
    libssl.so.1.0.2 => not found
    libcrypto.so.1.0.2 => not found
        libcrypto.so.1.0.2 (OPENSSL_1.0.2d) => not found
        libssl.so.1.0.2 (OPENSSL_1.0.2d) => not found

18.04 中是否仍在使用 upowerd,如果是,我如何确认我拥有哪些版本的 upowerd 和 libssl/libcrypto,以及我需要哪些版本,或者强制重新安装它们?

这是我似乎已经安装的:

$ sudo apt list --installed | grep "libssl"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libssl-dev/now 1.1.0h-2.0+ubuntu16.04.1+deb.sury.org+1 amd64 [installed,local]
libssl-doc/now 1.1.0h-2.0+ubuntu16.04.1+deb.sury.org+1 all [installed,local]
libssl1.0.0/bionic-updates,bionic-security,now 1.0.2n-1ubuntu5.1 amd64 [installed]
libssl1.1/now 1.1.0h-2.0+ubuntu16.04.1+deb.sury.org+1 amd64 [installed,local]

和 libcrypto:

$ sudo apt list --installed | grep "crypto"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libblockdev-crypto2/bionic,now 2.16-2 amd64 [installed]
libhcrypto4-heimdal/bionic,now 7.5.0+dfsg-1 amd64 [installed]
libk5crypto3/bionic,now 1.16-2build1 amd64 [installed,automatic]
python-crypto/bionic,now 2.6.1-8ubuntu2 amd64 [installed,automatic]
python3-asn1crypto/bionic,bionic,now 0.24.0-1 all [installed]
python3-crypto/bionic,now 2.6.1-8ubuntu2 amd64 [installed]
python3-cryptography/bionic-updates,bionic-security,now 2.1.4-1ubuntu1.2 amd64 [installed]

这可能是升级之前就存在的问题。如果没有 upowerd,我就没有电池电量管理,我的笔记本电脑突然断电,失去工作几次,我记得在升级之前也发生过这种情况。

编辑

根据要求,输出apt policy upower

upower:
  Installed: 0.99.7-2
  Candidate: 0.99.7-2
  Version table:
 *** 0.99.7-2 500
        500 http://ubuntu.ipserverone.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status

编辑2

要求apt重新安装upower会导致安装相同的软件包,并且apt policy upower输出不会发生变化。

$ sudo apt install --reinstall upower
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 45 not upgraded.
Need to get 102 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://ubuntu.ipserverone.com/ubuntu bionic/main amd64 upower amd64 0.99.7-2 [102 kB]
Fetched 102 kB in 0s (381 kB/s)  
(Reading database ... 283627 files and directories currently installed.)
Preparing to unpack .../upower_0.99.7-2_amd64.deb ...
Unpacking upower (0.99.7-2) over (0.99.7-2) ...
Setting up upower (0.99.7-2) ...
upower.service is a disabled or a static unit not running, not starting it.
Processing triggers for man-db (2.8.3-2) ...
Processing triggers for dbus (1.12.2-1ubuntu1) ...

$ sudo apt policy upower
upower:
  Installed: 0.99.7-2
  Candidate: 0.99.7-2
  Version table:
 *** 0.99.7-2 500
        500 http://ubuntu.ipserverone.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status

似乎没有设置任何转移,并且二进制文件仍然找不到libssl和库:libcryptoupowerd

$ dpkg-divert --list /usr/lib/upower/upowerd

$ ldd -v /usr/lib/upower/upowerd | grep 'not found'
    libssl.so.1.0.2 => not found
    libcrypto.so.1.0.2 => not found
        libcrypto.so.1.0.2 (OPENSSL_1.0.2d) => not found
        libssl.so.1.0.2 (OPENSSL_1.0.2d) => not found

编辑添加与全新安装的 Ubuntu 18.04 的比较

由于 @stephen-kitt 提到 upowerd 不应该依赖于 libssl,所以我安装了一个 18.04 的新虚拟机,果然,ldd 列表是不同的。

笔记本电脑有问题,除了ldd -v /usr/lib/upower/upowerd

ibffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff3f0466000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff3f01f5000)
libssl.so.1.0.2 => not found
libcrypto.so.1.0.2 => not found
libusbmuxd.so.4 => /usr/lib/x86_64-linux-gnu/libusbmuxd.so.4 (0x00007ff3effed000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff3f2f14000)

全新 18.04 安装

libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f4aa91de000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f4aa8f6c000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f4aa8c07000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f4aa89f4000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f4aa86d9000)
libusbmuxd.so.4 => /usr/lib/x86_64-linux-gnu/libusbmuxd.so.4 (0x00007f4aa84d1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4aabc8c000)

由于某种原因,笔记本电脑链接到 libssl 和 libcrypto,而全新安装则链接到 libgnutls、libtasn1 和 libgcrypt。

全新安装的报告仍然apt policy与笔记本电脑相同:

$ apt policy upower
upower:
  Installed: 0.99.7-2
  Candidate: 0.99.7-2
  Version table:
 *** 0.99.7-2 500
        500 http://th.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status

我不知道为什么会这样。

很快我就会重新安装笔记本电脑(它还有其他问题,比如 gedit 加载等应用程序的延迟很长),但如果能弄清楚这个混乱是如何发生的那就太好了。

答案1

不知何故,您最终得到的版本/usr/lib/upower/upowerd与中包含的文件不对应包裹upower

要解决此问题,请重新安装该软件包:

sudo apt install --reinstall upower

如果这没有帮助,请检查是否有任何转移:

dpkg-divert --list /usr/lib/upower/upowerd

如果显示转移,请检查相应的包;您可能需要升级或删除它。

答案2

我似乎通过找到这篇文章解决了这个问题https://stackoverflow.com/questions/46969560/messed-up-my-ubuntu-16-installation-gtk-upowerd-issues有人使用 Ubuntu 16(我本来就有)和我有同样的问题。我按照他的建议手动安装了 libssl .deb 软件包,现在 nautilus 立即加载,我可以再次访问我的“电源”设置页面。

ldd upowerd现在也不会显示任何“未找到”,并且可以链接到新安装的 libssl 和 libcrypto:

    libssl.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2 (0x00007f9026ee7000)
    libcrypto.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 (0x00007f9026a85000)

所以我不知道我的系统是如何搞砸的,但显然安装该软件包提供了一些修复了症状的 .so 库。

我欢迎任何进一步的评论,因为我仍然想知道为什么 upowerd 试图链接到它没有全新安装的库(请参阅我上面关于虚拟机中的全新安装的帖子,该虚拟机ldd -v对我的系统有不同的输出,尽管它们都upowerd安装了相同的软件包)。

不确定我是否应该接受这个答案,因为我对这种情况不太满意:)我觉得有些人会说我没有以正确的方式“修复”它,我只是用黑客解决了这个问题。

答案3

刚刚修复了从 19.10 升级到 20.04 的相同问题。

运行dpkg install --reinstalldpkg --verify没有帮助,但他们确实确认我安装了正确的软件包。

就我而言,运行ldd /usr/lib/upower/upowerd显示出对libusbmuxd-04.

运行objdump -p /usr/lib/upower/upowerd | grep usbmux没有显示依赖性。

问题似乎在于/etc/ld.so.cache删除该文件有所帮助,但仅限于下次构建缓存。

最终发现是 /usr/local 中的一个库导致了问题,我通过以下方式发现了这一点:

sudo rm /etc/ld.so/cache
export LD_DEBUG=files
ldd /usr/lib/upower/upowerd

这提供了更好的跟踪,最终将我指向/usr/local/lib导致问题的文件。

答案4

我遇到了类似的问题,最后找到了解决方法:

要理解的主要事情是,它upowerd本身不是链接到不存在的库,而是它链接的库之一然后链接到不存在的库。

为了查看依赖链,请执行以下操作:

ldd -v /usr/lib/upower/upowerd

这将为您提供库依赖关系的分层视图。追踪丢失的库并检查哪个库依赖于它。就我而言,它是我手动安装的库。删除它解决了问题。

相关内容