我有一个存储库和一个软件包,想从 Fedora 39 上的该存储库安装它。
该存储库在这里用于(测试目的,忽略存储桶名称 ubuntu,它包含 rpm 存储库)https://storage.googleapis.com/repotestubuntu2204通过创建createrepo
该包sample_project-1.3.5-1.fc39.x86_64.rpm
只是通过 C hello world 签名rpm --addsign
,通过生成的密钥gpg --gen-key
(RSA 4096 位,无密码,无过期)
添加此存储库
dnf config-manager --add-repo https://storage.googleapis.com/repotestubuntu2204/sample_project.repo
Adding repo from: https://storage.googleapis.com/repotestubuntu2204/sample_project.repo
看来没问题。现在尝试安装该软件包
dnf install -yv sample_project
...
Using rpmkeys executable at /usr/bin/rpmkeys to verify signatures
Package sample_project-1.3.5-1.fc39.x86_64.rpm is not signed
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: GPG check FAILED
所以它告诉我该软件包未签名,并且它正在使用 rpmkeys 来验证这一点。好的,下载 rpm 本身并检查签名
wget https://storage.googleapis.com/repotestubuntu2204/sample_project-1.3.5-1.fc39.x86_64.rpm
rpmkeys -Kv sample_project-1.3.5-1.fc39.x86_64.rpm
sample_project-1.3.5-1.fc39.x86_64.rpm:
Header SHA256 digest: OK
Header SHA1 digest: OK
Payload SHA256 digest: OK
MD5 digest: OK
我尝试了 gpg import 和 rpm --import - 没有任何帮助,而且据我所知,它不应该 b/c .repo 文件中存在指向 gpgkey 的链接,该文件似乎在添加存储库时已成功导入。
使用完全相同的程序为 openSUSE 构建的 rpm 可以正常工作,zypper 添加存储库,要求信任公钥,仅此而已。然而,Fedora 不会询问是否信任密钥,这有点可疑。但手动下载密钥文件并导入它也没有帮助。
yum install 给出同样的错误。 rpm -i 工作没有任何问题。签名有什么问题吗?
答案1
想通了。在调试 Fedora 的 rpm 签名时,我添加了--showrc
选项,因此签名命令是rpm --showrc --verbose --addsign *.rpm
,结果证明它没有对包头进行签名。rpm --addsign *.rpm
作品