无法在 Arch 中升级“文件系统”包

无法在 Arch 中升级“文件系统”包

我无法将文件系统升级到最新版本,/lib并且/lib64存在。

我不能只是删除链接,否则所有二进制文件都将无法运行,

任何想法?

# pacman -S filesystem
:: filesystem is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n] 
resolving dependencies...
looking for inter-conflicts...

Targets (1): filesystem-2013.01-3

Total Installed Size:   0.31 MiB
Net Upgrade Size:       0.21 MiB

Proceed with installation? [Y/n] 
(1/1) checking package integrity                          [###############################] 100%
(1/1) loading package files                               [###############################] 100%
(1/1) checking for file conflicts                         [###############################] 100%
error: failed to commit transaction (conflicting files)
filesystem: /lib exists in filesystem
filesystem: /lib64 exists in filesystem
Errors occurred, no packages were upgraded.

答案1

当符号链接/lib被移动到另一个包时,这个问题就被指出了。

一起更新 filesystem-2013.01-1 和 glibc-2.17-2

由于 /lib 符号链接从 glibc 包移动到更合适的文件系统包,因此需要一起更新 glibc-2.17-2 和 filesystem-2013.01-1。当您运行时,这会自动发生pacman -Syu。请记住,不支持部分更新,并且切勿使用该--force选项。

x86_64 上升级的一个潜在问题是在/usr/lib64.所有在此目录中包含文件的 Arch Linux 软件包都已更新,因此请先单独更新这些软件包。任何在此目录中包含文件的 AUR 包都应更新以将它们安装在/usr/lib.

答案2

该解决方案并不完全适用于问题中描述的问题(但对于这个),但无论如何它可能会有所帮助。

通常更新失败是由一些其他软件包引起的,需要先更新这些软件包才能更新该filesystem软件包。所以像这样更新:

$ sudo -s
# pacman -Syu --ignore filesystem,bash
# pacman -S bash
# pacman -Su

第一个命令只是为了确保我们打开了 root-shell,以防sudo更新期间被破坏。第二个命令更新除该filesystem包之外的所有包,最后一个命令最终更新filesystem

如果您使用 AUR 或自编译包:请记住,AUR 包中的文件或未维护的文件也可能导致与filesystem!假设filesystem更新失败并出现以下情况:

filesystem: /bin exists in filesystem
filesystem: /sbin exists in filesystem
filesystem: /usr/sbin exists in filesystem

您应该检查 AUR 包或未维护的文件/bin/sbin/usr/sbin使用以下命令:

grep '^\(bin\|sbin\|usr/sbin\)' /var/lib/pacman/local/*/files | cut -d ":" -f 1 | uniq | cut -d "/" -f 6

列出在任何这些目录中保存文件的所有包,并且

find /bin /sbin /usr/sbin -exec pacman -Qo -- {} + >/dev/null

列出这些目录中不属于任何包的所有文件。

更新 AUR 包和/或将未维护的文件移动到 /usr/local/... ,更新filesystem应该可以工作。

谢谢杰森·瑞恩纠正我的答案。

相关内容