我刚刚将我的系统从 Debian 11 升级到 12,按照以下步骤cyberciti 的指南。这个系统已经保持最新9年多了,所以它已经经历了至少4次重大升级(今天的Debian 7或8到12)。
在第一次运行期间apt upgrade --without-new-pkgs
,我遇到了一个错误libudev
(遗憾的是我忘记保留命令的输出),我通过删除 2 个文件解决了该问题:
$ rm /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1.6.5
我能够完成升级并重新启动。
通过进一步调查,我的系统似乎还有一些其他重复的库:
$ dpkg --search /lib/x86_64-linux-gnu/perl/ /usr/lib/x86_64-linux-gnu/perl/
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/perl/
libperl5.36:amd64: /usr/lib/x86_64-linux-gnu/perl
看起来这些目录不是符号链接:
$ ls -ld /lib/ /lib/x86_64-linux-gnu/ /usr/ /usr/lib/ /usr/lib/x86_64-linux-gnu/
drwxr-xr-x 84 root root 4.0K Jul 5 21:05 /lib//
drwxr-xr-x 78 root root 96K Jul 5 21:05 /lib/x86_64-linux-gnu//
drwxr-xr-x 12 root root 4.0K Jul 5 20:32 /usr//
drwxr-xr-x 84 root root 4.0K Jul 5 21:05 /usr/lib//
drwxr-xr-x 78 root root 96K Jul 5 21:05 /usr/lib/x86_64-linux-gnu//
我之前已经遇到过一个非常类似的问题:从 Debian 10 升级到 11 后无法恢复 systemd:“未定义符号:seccomp_api_get”
以下是问题:
/lib/x86_64-linux-gnu/
和中有重复的库是否正常/usr/lib/x86_64-linux-gnu/
- 我可以依赖 的输出
dpkg --search
并删除显示的路径no path found …
吗?或者有什么工具可以帮助我清理这个烂摊子吗? - 我的系统上发生哪些事件可能导致这种情况发生?
更新:实际上看起来有两个目录是相同的:
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore
ls: cannot access '/lib/x86_64-linux-gnu/test.ignore': No such file or directory
ls: cannot access '/usr/lib/x86_64-linux-gnu/test.ignore': No such file or directory
$ touch /lib/x86_64-linux-gnu/test.ignore
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore
-rw-r--r-- 1 root root 0 Jul 5 22:14 /lib/x86_64-linux-gnu/test.ignore
-rw-r--r-- 1 root root 0 Jul 5 22:14 /usr/lib/x86_64-linux-gnu/test.ignore
但我不明白它是如何工作的。现在我知道我不能删除其中的文件,/lib/x86_64-linux-gnu/
因为它也会删除其中的文件/usr/lib/x86_64-linux-gnu/
。
答案1
答案2
在斯蒂芬·基特的回答的帮助下,以下是我的问题的答案:
/lib/x86_64-linux-gnu/
和中有重复的库是否正常/usr/lib/x86_64-linux-gnu/
是的,有一个符号链接:
$ ls -ld /lib /usr/lib
lrwxrwxrwx 1 root root 7 Jul 5 20:34 /lib -> usr/lib/
drwxr-xr-x 75 root root 4096 Jul 6 00:42 /usr/lib/
- 我可以依赖 的输出
dpkg --search
并删除显示的路径no path found …
吗?或者有什么工具可以帮助我清理这个烂摊子吗?
不,使用dpkg --search
on/lib
只会给出不相关的结果,因为某些文件安装在/usr/lib/
:
$ dpkg --search /lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm \
/usr/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
libperl5.36:amd64: /usr/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
删除该文件/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
将删除 中的文件/usr/lib
,这可能会破坏整个系统。
- 我的系统上发生哪些事件可能导致这种情况发生?
正如 Stephen 共享的链接中所解释的,从 到/lib
的符号链接/usr/lib/
在 Debian 12 上是正常的。