我刚刚按照cyberciti 的指南将我的系统从 Debian 11 升级到 12 。这个系统已经保持最新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//
我之前已经遇到过一个非常类似的问题:Can't Restore systemd after Upgrade from Debian 10 to 11: “undefined symbol: 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/
。
如果您想查看符号链接,则不得添加
/
:应该会向您显示不同的结果。
Debian 12强制执行“合并
/usr
”,您看到的“重复”是正常的。在斯蒂芬·基特的回答的帮助下,以下是我的问题的答案:
是的,有一个符号链接:
不,使用
dpkg --search
on/lib
会给出不相关的结果:删除该文件
/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
将删除 中的文件/usr/lib
,这可能会破坏整个系统。正如 Stephen 共享的链接中所解释的,从
/lib
到 的符号链接/usr/lib/
在 Debian 12 上是正常的。