Как мне установить rpm, который жалуется на rpmlib(FileDigests) <= 4.6.0-1?

Я пытаюсь установить RPM-файл на CentOS 5, и я не уверен, как решить эту проблему:

$ 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, который работает с моей версией rpm (которая составляет 4.4.2.3) но я не хочу этого делать. Как сделать мою систему совместимой с этим файлом rpm?

Бонусные баллы, если вы скажете мне, как я могу исправить ошибку открытого ключа.

7 ответов

Решение

Что с синтаксисом чего-то, за которым следуют скобки?

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

Языки сценариев, такие как Perl и Tcl, позволяют добавлять дополнительные модули. Вашему пакету могут потребоваться некоторые из этих дополнительных модулей. RPM использует специальный синтаксис с круглыми скобками для указания зависимостей модуля скрипта. Например: Требуется: perl(Carp) >= 3.2 Это указывает на требование для дополнительного модуля Carp для Perl, больше или равно версии 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 Обороты в системе, для которой он не был разработан. На самом деле, в своем вопросе вы утверждаете, что устанавливаете его на CentOS 5, а пакет, который вы пытаетесь установить, предназначен для CentOS 6 (или RHEL 6). Для CentOS 5 вам нужен epel-release-5-4.noarch.rpm. Возможно, вы захотите прочитать документацию EPEL, прежде чем продолжить, которая ответит на этот вопрос так же, как и на другие, которые у вас могут возникнуть.

Я пытался использовать yum, чтобы он мог автоматически разрешать зависимости, но не смог:

Правильно, потому что эти функции не доступны в CentOS 5. С точки зрения yum Вы просили это для волшебных единорогов. Он не может найти ни одного.

Бонусные баллы, если вы скажете мне, как я могу исправить ошибку открытого ключа.

Установите ключ подписи EPEL. Если вы прочтете документацию EPEL - это удивительно, что вы там найдете - вы получите ссылку на https://fedoraproject.org/keys, в которой содержатся инструкции по установке открытых ключей, используемых проектом Fedora.

Вы хотите EPEL версии 5.x (не 6.x).

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

Вы используете CentOS 5. CentOS 6 еще не вышел.

Текущая ссылка rmp, которая работала для меня на CentOS 5.5:

# 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 / и т. Д.), Чтобы найти наиболее подходящий / правильный адрес.

Лучшая команда будет $ yum install epel-release и ням получит правильные обороты

Вы также можете запустить приведенные ниже команды, чтобы исправить ошибку открытого ключа.

$ yum clean all
$ yum makecache
$ yum update

Если вы создаете свои собственные RPM-пакеты и сталкиваетесь с этой проблемой, это связано с тем, что rpmbuild использует разные алгоритмы дайджеста и разное сжатие в зависимости от операционной системы, упаковывающей RPM. Для улучшения совместимости в файл спецификации можно добавить следующее. Мне пришлось добавить это, чтобы я мог устанавливать в Oracle Linux пакеты RPM, созданные в Fedora 33. Эти настройки взяты из файла спецификации, созданного 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

Итак, если вы видите эту проблему при установке чего-либо, это потому, что вы, вероятно, используете пакеты, созданные для другого дистрибутива.

У меня аналогичная ошибка при попытке установить переключатель языка ввода локали клавиатуры на 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 и ЛИЭС версию 4.14.2-36 из официального CentOS поток Repo

где добавлена ​​поддержка zstd:

  • Ср 16 октября 2019 Пан Matilainen - 4.14.2-26
  • Повторно включить поддержку 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 и что еще затронуто, но теперь я могу установить свежие RPM из Fedora/EPEL

конечно же я установил архиватор Zstandard от Facebook (приложение *.zst /zstd)

yum install zstd libzstd

Моя проблема была описана в этой теме: http://comments.gmane.org/gmane.linux.redhat.fedora.general/410408

Ссылки, размещенные в документации, являются перенаправлениями, которые (как-то?) Вызывают проблемы с загрузкой. Сделал то, что сказал поток, и затем остальные документы EPEL работали.

Другие вопросы по тегам