我正在尝试通过我们构建的本地 yum 存储库使 Chef-11.16.4-1.el6.x86_64.rpm 可用于我们的服务器。
它在 RHEL 存储库中不可用,因此我必须手动下载并将其保存在我们的存储库中。
以下是我在 yum repo 服务器上所做的操作:
1. cd /packages/rhel65-base/; wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.16.4-1.el6.x86_64.rpm
2. createrepo /packages/rhel65-base/
Yum 客户端能够看到可用的新软件包:
[user1@testserver01 ~]$ yum list chef
Loaded plugins: amazon-id, rhui-lb, security
Installed Packages
chef.x86_64 11.16.0-1.el6 installed
Available Packages
chef.x86_64 11.16.4-1.el6 local-rhel65-base
但是当尝试安装最新的 Chef 包时,会出现以下错误:
warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Public key for chef-11.16.4-1.el6.x86_64.rpm is not installed
假设 Chef rpm 尚未签名,我尝试通过以下方式自己签名https://iuscommunity.org/pages/CreatingAGPGKeyandSigningRPMs.html但仍然无法让它工作。
我可以在 Chef 网站上找到的一些有用信息是该包的 SHA1 校验和值。
有人有解决这个问题的想法/建议吗?谢谢!
答案1
如果包没有签名,最简单的解决方案可能是yum --nogpgcheck install chef
。如果您有本地存储库,您可以设置:
gpgcheck=no
在相应的.repo
文件中。
答案2
这里的问题是您尚未将服务器配置为接受对包进行签名的密钥作为此存储库的有效 GPG 密钥。
最简单的解决方案当然是运行 yum with nogpgcheck
,尽管它显然也不太安全。但是,如果您已经下载了该软件包并对其进行了验证,并将其保存在不可能被篡改的地方,那么它可能是可以接受的。
如果这是不可接受的,您需要获取用于对包进行签名的密钥的公共部分,并将其放置在您尝试安装包的服务器上。您应该只需将密钥复制到那里并运行即可完成此操作rpm -i /path/to/RPM-GPG-KEY-REPONAME
。
密钥通常应放置在/etc/pki/rpm-gpg/RPM-GPG-KEY-REPONAME
.另请检查您的存储库的存储库文件,/etc/yum.repos.d
使其包含以下行:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-REPONAME
gpgcheck=1
答案3
这是一个老问题,但仍然有价值,我认为回答可以防止误导信息。正如您从消息中看到的那样,该包已签名:
Public key for chef-11.16.4-1.el6.x86_64.rpm is not installed
但是密钥尚未安装...我尝试搜索此软件包密钥但找不到它的 url(这实际上是导致我来到这里的原因)。找到/验证后,您可以通过以下方式导入它:
rpm --import <url>
来自 @larsks 的解决方案残疾人检查 gpg 密钥...