安装旧版后,运行pacman -S archlinuxcn-keyring
提示:
manjaro-system invalid corruted package pgp signature
结果是命令执行失败。
原因(似乎是)
新版manjaro的 pacman 上游更新了密钥环的格式,使得本地的主密钥无法签署其它密钥
解决方法:
1.先检查系统时间,如果不对,就改
sudo ntpd -qg
2 sudo hwclock -w
2.更新已知密钥
pacman-key --refresh-keys
这步时间很久,因为有很多
3.因为开头报错的过期秘钥是manjaro-system ,所以我先更新这个
pacman -S manjaro-system
4.然后再执行开头的命令
pacman -S archlinuxcn-keyring
成功。
5.有博客说的方法改动太多,我没尝试
sudo rm -rf /etc/pacman.d/gnup //rm命令谨慎操作
sudo pacman-key --init //注意,操作这里先把 /etc/pacman.conf 文件恢复为初始备份
sudo pacman-key --populate archlinux
pacman秘钥的知识
在 Arch Linux 中,GPG 密钥用于验证软件包的完整性和真实性,确保你下载和安装的软件包没有被篡改。当你从软件仓库安装软件包时,pacman(Arch Linux 的包管理器)会使用 GPG 密钥来验证这些软件包的签名
这些秘钥需要下载,pacman-key --populate
用于自动从 Arch Linux 的密钥服务器(archlinux.org
的密钥服务器)下载并信任 Arch Linux 官方软件仓库的 GPG 密钥(公钥)
下载的公钥会被 pacman 自动信任,这意味着当你从 Arch Linux 的官方仓库安装软件包时,pacman 会自动使用这些公钥来验证软件包的签名
上面第3和4的命令,是手工安装公钥集合,Keyring是GPG 公钥集合。如果--populate 提示某个秘钥环文件不存在,就需要手工安装对应包。
pacman -S 安装软件时,是否检查公钥? 是可以控制的。在pacman.conf文件结尾,每个仓库可以设置SigLevel = 有很多可选项,之间用空格
pacman命令的知识
pacman -Syy 更新缓存,不升级现有软件。追加u 就会升级全部。