我正在尝试在 CentOS 5 上安装一个 rpm 文件,但不确定如何解决它引起的这个问题:
$ rpm --install epel-release-6-5.noarch.rpm
warning: epel-release-6-5.noarch.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID 0608b895
error: Failed dependencies:
rpmlib(FileDigests) <= 4.6.0-1 is needed by epel-release-6-5.noarch
rpmlib(PayloadIsXz) <= 5.2-1 is needed by epel-release-6-5.noarch
rpmlib(FileDigests) <= 4.6.0-1 行是什么意思?rpmlib 过时了吗?FileDigests 过时了吗?括号后面的语法是什么?
我尝试使用 yum 以便它可以自动解决依赖关系,但是无法做到:
$ sudo yum --nogpgcheck install epel-release-6-5.noarch.rpm
...
Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
rpmlib(FileDigests) is needed by epel-release-6-5.noarch
rpmlib(PayloadIsXz) is needed by epel-release-6-5.noarch
Complete!
(1, [u'Please report this error in https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%205&component=yum'])
在本页https://bugzilla.redhat.com/show_bug.cgi?id=665073,他们说我的 rpm 已过期,但又说我应该请求一个适用于我的 rpm 版本(4.4.2.3)的 rpm 文件,但我不想这样做。我该如何使我的系统与此 rpm 文件兼容?
如果您告诉我如何修复公钥错误,我将获得加分。
答案1
某些内容后面跟着括号的语法是怎样的?
从http://jfearn.fedorapeople.org/en-US/RPM/0.1/html/RPM_Guide/ch-advanced-packaging.html:
Perl 和 Tcl 等脚本语言允许使用附加模块。您的软件包可能需要其中一些附加模块。RPM 使用带括号的特殊语法来指示脚本模块依赖关系。例如:Requires: perl(Carp) >= 3.2 这表示 Perl 需要 Carp 附加模块,版本必须大于或等于 3.2。
在这种情况下,它指的是 rpm 库的特定功能。
错误:依赖项失败:epel-release-6-5.noarch 需要 rpmlib(FileDigests) <= 4.6.0-1 epel-release-6-5.noarch 需要 rpmlib(PayloadIsXz) <= 5.2-1
这表明你正在尝试epel-release
在非设计用于的系统上安装 rpm。事实上,在你的问题中,你声明你正在 CentOS 5 上安装它,而你尝试安装的软件包是为 CentOS 6(或 RHEL 6)设计的。对于 CentOS 5,你需要EPEL-发布-5-4.noarch.rpm。您可能想阅读EPEL 文档在您继续之前,这将回答这个问题以及您可能遇到的其他问题。
我尝试使用 yum 以便它可以自动解决依赖关系,但是无法做到:
是的,因为这些功能在 CentOS 5 上不可用。从yum
你要求它提供魔法独角兽的角度来看。它找不到任何魔法独角兽。
如果您告诉我如何修复公钥错误,我将获得加分。
安装 EPEL 签名密钥。如果你阅读 EPEL 文档——你会发现那里的内容很神奇——你会得到一个链接https://fedoraproject.org/keys,其中包括有关安装 Fedora 项目使用的公钥的说明。
答案2
您想要 EPEL 版本 5.x(而不是 6.x)。
http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
您正在使用 CentOS 5。CentOS 6 尚未推出。
答案3
目前在 CentOS 5.5 上对我有用的 rmp 链接是:
# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
自动处理依赖关系。
另请注意,仔细阅读以下转发可能会有所帮助: http://dl.fedoraproject.org/pub/epel/5/i386/(/6/i386/ 等)来找到最合适/正确的地址。
答案4
我在 CentOS8 上尝试安装键盘区域输入语言切换器时遇到了类似的错误
CentOS Linux release 8.1.1911 (Core)
Derived from Red Hat Enterprise Linux 8.1 (Source)
ID_LIKE="rhel fedora"
PLATFORM_ID="platform:el8"
4.18.0-147.el8.x86_64 #1 SMP Wed Dec 4 21:51:45 UTC 2019 x86_64 GNU/Linux
yum install /home/i/Downloads/xneur-0.20.0-6.fc31.x86_64.rpm
...
Error: transaction check vs depsolve:
rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by xneur-0.20.0-6.fc31.x86_64
问题出在 zstd 有效载荷(压缩)中https://bugzilla.redhat.com/show_bug.cgi?id=1715799 RHEL8/CentOS8 尚不支持
https://fedoraproject.org/wiki/Changes/Switch_RPMs_to_zstd_compression
rpm -q rpm-libs rpm
rpm-libs-4.14.2-25.el8.x86_64
rpm-4.14.2-25.el8.x86_64
然后我下载了 RPM 和 libs 版本 4.14.2-三十六来自官方CentOS Stream 仓库
在哪里添加了 zstd 支持:
- 2019 年 10 月 16 日星期三 Panu Matilainen - 4.14.2-二十六
- 重新启用对 zstd 的支持(#1715799)
并通过 ( 安装小心你可能会破坏你的系统有allowerasing
選擇!自行承担风险)
dnf install --allowerasing python3-rpm-4.14.2-36.el8.x86_64.rpm rpm-4.14.2-36.el8.x86_64.rpm rpm-build-libs-4.14.2-36.el8.x86_64.rpm rpm-libs-4.14.2-36.el8.x86_64.rpm
一些软件包被删除
Removing dependent packages:
buildah x86_64 1.9.0-5.module_el8.1.0+237+63e26edc @AppStream 24 M
container-selinux noarch 2:2.107-2.module_el8.1.0+237+63e26edc @AppStream 40 k
rpm-build x86_64 4.14.2-25.el8 @AppStream 314 k
rpm-plugin-selinux x86_64 4.14.2-25.el8 @anaconda 14 k
rpm-plugin-systemd-inhibit x86_64 4.14.2-25.el8 @anaconda 14 k
rpm-sign x86_64 4.14.2-25.el8 @anaconda 23 k
selinux-policy noarch 3.14.3-20.el8 @anaconda 24 k
selinux-policy-targeted noarch 3.14.3-20.el8 @anaconda 49 M
error: selabel_open: (/etc/selinux/targeted/contexts/files/file_contexts) No such file or directory
error: Plugin selinux: hook psm_pre failed
error: selinux-policy-3.14.3-20.el8.noarch: erase failed
Failed:
selinux-policy-3.14.3-20.el8.noarch
不知道如何修复 selinux 以及其他受影响的东西,但现在我可以从 Fedora/EPEL 安装新的 RPM
当然,我自己安装了 Facebook 的 Zstandard 归档器 (*.zst application/zstd)
yum install zstd libzstd