30

Im trying to install an rpm file on CentOS 5 and Im not sure how to resolve this issues it brings up:

$ 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

What do the lines rpmlib(FileDigests) <= 4.6.0-1 mean? is rpmlib out of date or FileDigests out of date? Whats with the syntax of something followed by parentheses?

Ive tried to use yum so that it can resolve dependencies automatically but it is unable:

$ 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'])

On this page https://bugzilla.redhat.com/show_bug.cgi?id=665073, they say my rpm is out of date but then say I should request an rpm file that works with my version of rpm (which is 4.4.2.3) but I don't want to do that. How do I make my system compatible with this rpm file?

Bonus points if you tell me how I can fix the public key error.

1
  • While this is not exactly installing a package, one could at least extract a package and then use its contents w/o installing it: rpm2cpio some-package.rpm | cpio -tv to list its contents and with cpio -ivd to extract it.
    – ckujau
    Aug 24, 2017 at 5:32

7 Answers 7

32

Whats with the syntax of something followed by parentheses?

From http://jfearn.fedorapeople.org/en-US/RPM/0.1/html/RPM_Guide/ch-advanced-packaging.html:

Scripting languages such as Perl and Tcl allow for add-on modules. Your package may require some of these add-on modules. RPM uses a special syntax with parenthesis to indicate script module dependencies. For example: Requires: perl(Carp) >= 3.2 This indicates a requirement for the Carp add-on module for Perl, greater than or equal to version 3.2.

In this case, it is referring to particular features of the rpm library.

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

This suggests you're trying to install the epel-release rpm on a system for which it was not designed. In fact, in your question, you state you're installing this on CentOS 5, while the package you're attempting to install is designed for CentOS 6 (or RHEL 6). For CentOS 5, you want epel-release-5-4.noarch.rpm. You might want to read the EPEL documentation before you proceed, which would have answered this question as well as others you might have.

Ive tried to use yum so that it can resolve dependencies automatically but it is unable:

Right, because those features aren't available on CentOS 5. From the perspective of yum you've asked it for magic unicorns. It can't find any.

Bonus points if you tell me how I can fix the public key error.

Install the EPEL signing key. If you read the EPEL documentation -- it's amazing what you'll find there -- you'll get a link to https://fedoraproject.org/keys, which includes instructions on installing the public keys used by the Fedora project.

1
  • 17
    This is a good answer, lots of answers that clear things up. Too bad about the tone that is slightly snarky. Maybe the lay of the land is clear to you, but for me it's all still covered by fog of war... Oct 5, 2012 at 8:48
7

You want EPEL release 5.x (not 6.x).

http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

You're running CentOS 5. CentOS 6 is not out yet.

4

The current rmp link that worked for me on CentOS 5.5 is:

# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Handles dependencies automagically.

Also note it can be helpful to peruse the repost at eg: http://dl.fedoraproject.org/pub/epel/5/i386/ (/6/i386/ etc) to find the most appropriate/correct address.

0

The best command will be $ yum install epel-release and yum will get the correct rpm

You can further run the below commands to fix the public key error.

$ yum clean all
$ yum makecache
$ yum update
0

i've got similar error when tried to install keyboard locale input language switcher on 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

The problem was in zstd payloads (compression) https://bugzilla.redhat.com/show_bug.cgi?id=1715799 that is not supported in RHEL8/CentOS8 yet

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

then i downloaded RPM and libs version 4.14.2-36 from official CentOS Stream Repo

where zstd support added:

  • Wed Oct 16 2019 Panu Matilainen - 4.14.2-26
  • Re-enable support for zstd (#1715799)

and install via (BE CAREFULL YOU CAN BROKE YOUR SYSTEM with allowerasing option! do it on your own risk)

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

some packages were removed

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

dont know how to fix selinux and what othe things affected but now i can install fresh RPMs from Fedora/EPEL

off course i installed Facebook's Zstandard archiver (*.zst application/zstd) itself

yum install zstd libzstd
0

If you are building your own RPMs and run into this problem, it's because rpmbuild uses different digest algorithms and different compression based on the operating system packaging the RPM. The following can be added to your spec file for improved compatibility. I had to add this so I could install RPMs in Oracle Linux that were built in Fedora 33. These settings are pulled from a spec file that was generated by fpm.

# Use gzip payload compression
%define _binary_payload w9.gzdio
# Use md5 file digest method. 
# The first macro is the one used in RPM v4.9.1.1
%define _binary_filedigest_algorithm 1
# This is the macro I find on OSX when Homebrew provides rpmbuild (rpm v5.4.14)
%define _build_binary_file_digest_algo 1

So if you're seeing this issue installing something, it's because you're probably using packages built for a different distro.

2
  • 1
    If you build your own RPMs for different distros, use mock to avoid problems like this. It builds the RPM in a container corresponding to the target distribution. Jul 11, 2021 at 4:47
  • @MichaelHampton good call out. Definitely use mock if you need to target specific distros. I should mention specifically that these settings are for broad compatability. I stumbled on this particular solution trying to figure out how to get the same RPM to install on multiple different distros.
    – Callan
    Jul 20, 2021 at 16:11
-1

My problem was described in this thread: http://comments.gmane.org/gmane.linux.redhat.fedora.general/410408

The links posted on the documentation are redirects that (somehow?) cause problems with the download. Did what the thread said and then the rest of the EPEL docs worked out.

1
  • 1
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. Oct 13, 2012 at 20:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.