我刚刚按照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/
。