升级到 Debian 12 后,/lib/x86_64-linux-gnu/ 和 /usr/lib/x86_64-linux-gnu/ 中出现重复文件

A.L*_*A.L 2 debian dpkg apt dist-upgrade

我刚刚按照cyberciti 的指南将我的系统从 Debian 11 升级到 12 。这个系统已经保持最新9年多了,所以它已经经历了至少4次重大升级(今天的Debian 7或8到12)。

\n

在第一次运行期间apt upgrade --without-new-pkgs,我遇到了一个错误libudev(遗憾的是我忘记保留命令的输出),我通过删除 2 个文件修复了该错误:

\n
$ rm /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1.6.5\n
Run Code Online (Sandbox Code Playgroud)\n

我能够完成升级并重新启动。

\n
\n

通过进一步调查,我的系统似乎还有一些其他重复的库:

\n
$ dpkg --search /lib/x86_64-linux-gnu/perl/ /usr/lib/x86_64-linux-gnu/perl/\ndpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/perl/\nlibperl5.36:amd64: /usr/lib/x86_64-linux-gnu/perl\n
Run Code Online (Sandbox Code Playgroud)\n

看起来这些目录不是符号链接:

\n
$ ls -ld /lib/ /lib/x86_64-linux-gnu/ /usr/ /usr/lib/ /usr/lib/x86_64-linux-gnu/\ndrwxr-xr-x 84 root root 4.0K Jul  5 21:05 /lib//\ndrwxr-xr-x 78 root root  96K Jul  5 21:05 /lib/x86_64-linux-gnu//\ndrwxr-xr-x 12 root root 4.0K Jul  5 20:32 /usr//\ndrwxr-xr-x 84 root root 4.0K Jul  5 21:05 /usr/lib//\ndrwxr-xr-x 78 root root  96K Jul  5 21:05 /usr/lib/x86_64-linux-gnu//\n
Run Code Online (Sandbox Code Playgroud)\n

我之前已经遇到过非常类似的问题:Can\'t Restore systemd after Upgrade from Debian 10 to 11: \xe2\x80\x9cundefined symbol: seccomp_api_get\xe2\x80\x9d

\n
\n

以下是问题:

\n
    \n
  1. /lib/x86_64-linux-gnu/和中有重复的库是否正常/usr/lib/x86_64-linux-gnu/
  2. \n
  3. 我可以依赖 的输出dpkg --search并删除显示的路径no path found \xe2\x80\xa6吗?或者有什么工具可以帮助我清理这个烂摊子吗?
  4. \n
  5. 我的系统上的哪些事件可能使这成为可能?
  6. \n
\n

更新:实际上看起来有两个目录是相同的:

\n
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore\nls: cannot access \'/lib/x86_64-linux-gnu/test.ignore\': No such file or directory\nls: cannot access \'/usr/lib/x86_64-linux-gnu/test.ignore\': No such file or directory\n$ touch /lib/x86_64-linux-gnu/test.ignore\n$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore\n-rw-r--r-- 1 root root 0 Jul  5 22:14 /lib/x86_64-linux-gnu/test.ignore\n-rw-r--r-- 1 root root 0 Jul  5 22:14 /usr/lib/x86_64-linux-gnu/test.ignore\n
Run Code Online (Sandbox Code Playgroud)\n

但我不明白它是如何工作的。现在我知道我不能删除其中的文件,/lib/x86_64-linux-gnu/因为它也会删除其中的文件/usr/lib/x86_64-linux-gnu/

\n

Ste*_*itt 5

如果您想查看符号链接,则必须添加/

\n
ls -ld /lib\n
Run Code Online (Sandbox Code Playgroud)\n

应该会向您显示不同的结果。

\n

Debian 12强制执行 \xe2\x80\x9cmerged /usr\xe2\x80\x9d,您看到的 \xe2\x80\x9cduplication\xe2\x80\x9d 是正常的。

\n