自从 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
和库:libcrypto
upowerd
$ 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 --reinstall
并dpkg --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
这将为您提供库依赖关系的分层视图。追踪丢失的库并检查哪个库依赖于它。就我而言,它是我手动安装的库。删除它解决了问题。