无法升级Arch Linux(pacman -Syu无法工作)

35

我在我的 Arch Linux 上运行 sudo pacman -Syu 命令,出现了以下内容:

cristian@localhost:~$ sudo pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
 xenlism-arch is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: package-query: requires pacman<4.3

如何解决这个问题?

更新

我已经尝试了@jham建议的两种解决方案。我完全删除了yaourt和package-query。在pacman -Qi pacman中的'required by'处,我没有任何项目。我还从pacman.conf中注释了multilib和xenlism-arch。当我执行pacman -Syu时,出现以下情况:

:: Proceed with installation? [Y/n] 
(244/244) checking keys in keyring                              [###################################] 100%
(244/244) checking package integrity                            [###################################] 100%
error: confuse: signature from "Thorsten Töpper <atsutane@freethoughts.de>" is unknown trust
:: File /var/cache/pacman/pkg/confuse-2.8-2-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] 
error: failed to commit transaction (invalid or corrupted package)
Errors occurred, no packages were upgraded.

1
你是否已经安装了package-query和yaourt?如果是的话,你可能会遇到package-query的冲突。尝试使用yaourt -S package-query命令,然后再次使用pacman进行升级。之后,你需要重新构建你的package-query,因为它可能与新的pacman不兼容。 - jham
1
一般来说,看起来本地安装了一个未在官方ArchLinux仓库中管理的软件包。您可以使用 pacman -Qi pacman 命令检查哪些软件包需要您当前安装的 pacman 版本(请查看输出中的“Required By”部分)。然后,可以通过 pacman -Qm 命令查看列出的任何软件包是否出现在本地安装的软件包列表中(例如,通过 yaourt 安装的软件包)。如果找到其中一个,则删除该软件包并尝试再次使用 pacman 进行升级。另外可能的情况是,您添加了 multilib 或 xenlism-arch 仓库中的软件包与其他软件包发生了冲突。 - jham
我已经更新了最初的问题,并在尝试了您提供的解决方案后,陈述了当前情况。请查看一下。谢谢。 - Cristian
2
yaourt -S package-query 对我很有帮助。 - Bernhard Fürst
现在只剩下 https://aur.archlinux.org/packages/package-query-git,package-query 已经不存在了。 - dotbit
7个回答

61

我刚遇到了这个错误。问题似乎是archlinux-keyring包中有新的密钥,以及使用那些密钥签名的新包(confuse)。由于两个包在同一次操作中更新,因此在更新完成之前无法使用新密钥,但是在检查包之前也不会启动事务...

解决方案是单独更新archlinux-keyring

pacman -S archlinux-keyring

然后完成剩下的事情:

pacman -Su

如果那样不起作用,你可以尝试手动逐个运行钥匙:

pacman-key --populate

但通常情况下,这并不是必要的。


3
我已经删除了/etc/pacman.d/gnupg目录以重置所有密钥,pacman-key --populate挽救了局面。 - Emile Bergeron
2
populate步骤之后,我通过执行额外的sudo pacman-key --refresh-keys命令解决了这个问题。然后像往常一样更新即可。 - holzkohlengrill

7

我恰巧遇到了相同的问题,并通过以下方式解决了它:

$ sudo pacman -Rdd package-query # Purge the conflicting package-query
$ sudo pacman -Syu               # There it works

# Now reinstall package-query
$ git clone https://aur.archlinux.org/package-query.git
$ cd package-query && makepkg -si

2

如果您在这里没有找到rorido的解决方案,请尝试使用用户Bernhard Fürst或Jham的答案,只需使用pacman -S package-query即可,这对我而言没有问题。

另外,如果您仍然遇到像此类libalpm.so.8: cannot open shared object file: No such file or directory的问题,则必须手动重新安装package-query和yaourt。

sudo pacman-db-upgrade
yaourt -R package-query yaourt

git clone https://aur.archlinux.org/package-query.git
cd package-query
makepkg -si
cd ..
git clone https://aur.archlinux.org/yaourt.git
cd yaourt
makepkg -si
cd ..

2

如果您仍然遇到错误,请尝试以下方法:


sudo find /var/cache/pacman/pkg/ -iname "*.part" -exec rm {} \;

它会删除.part文件,这会导致“无效或损坏的包”错误。在删除它们后,请运行以下命令:
sudo pacman -Syyu

如果没有任何缺失的密钥,这应该可以解决问题。

这对我在Manjaro安装上起作用了。在此之前,我尝试了各种修复方法,但问题并没有消失。这个方法解决了问题。 - M Wade

1
以下内容适用于ArchLinux,但也适用于其他Linux发行版。 要纠正无效的KEY,需要执行以下操作:
rm -fr /etc/pacman.d/gnupg
pacman-key --init
pacman-key --populate archlinux

假设抛出错误的关键在Blackarch中,则还需要执行以下操作:

sudo pacman-key --populate blackarch

最后

sudo pacman -Sy archlinux-keyring
sudo pacman-key --populate archlinux
sudo pacman-key --refresh-keys

1
我正在使用Manjaro,经过长时间的搜索,我通过以下简单命令解决了问题。
注意:在第一次使用pacman之前,必须运行pacman-key --init;然后可以使用pacman-key --populate archlinux manjaro来填充所有官方Manjaro Linux打包者的密钥到本地密钥环中。

你从哪个URL获取了你的修复程序?我也在使用Manjaro,遇到了这个问题,但幸运的是,通过谷歌搜索我的错误信息(即使只是第一个键失败),我找到了一个4天前的报告和解决方案https://forum.manjaro.org/t/problem-to-update-jerome-leclanche-is-unknown-trust/50739/2(警告:要获得修复,请按照其直接链接,然后是“如何解决Manjaro中的密钥环问题”的直接链接),这对我来说非常完美。它似乎基本上是与你的修复程序相同,但提供了背景,并将“pacman-key --init”替换为“sudo pacman -Syy && sudo pacman-key --refresh-keys”--为什么? - Destiny Architect

0

事务准备失败(无效或损坏的数据库

这是由于实际(有故障的)镜像服务器提供了垃圾数据。

注释掉那些标准服务器,使用质量好的服务器,例如:

ftp://ftp5.gwdg.de/pub/linux/archlinux/community/os/x86_64/

太遗憾了,/etc/pacman.conf 的注释非常不好,似乎故意不提供帮助和效率,总是含糊其辞,从未具体有用。这是 pacman 无尽错误中的最后一个。密钥难以管理,服务器混乱,库拼写混乱。我花了一天多的时间才度过这可怕的 Arch 体验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接