Вопрос или проблема
Я использовал centOS8 и пытался выполнить yum install -y gcc tcl
, но не удалось. Ошибка показывает, что есть какая-то проблема с проверкой подписи или что-то подобное в процессе установки rpm. Консольный лог выглядит как
error: /var/cache/dnf/base-82351eca59c28538/packages/cpp-8.5.0-21.el8.x86_64.rpm: signature hdr data: BAD, no. of bytes(9088) out of range
и
Error: GPG check FAILED
.
Я попытался обновить свой rpm установщик, но возникла та же проблема, и yum update
тоже не сработал. Я попробовал использовать --nogpgcheck
, но это не помогло.
У вас здесь две проблемы:
1- error: /var/cache/dnf/base-82351eca59c28538/packages/cpp-8.5.0-21.el8.x86_64.rpm: signature hdr data: BAD, no. of bytes(9088) out of range
: существует несколько решений для этого:
- выполните следующую команду
dnf clean all
- если команда выше не устранила проблему: следуйте следующим шагам:
curl ttps://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm -o centos-gpg-keys-8-3.el8.noarch.rpm
предположим, что вы используете Centos 8, вы можете получить последнюю версию, посетив основной сайт.rpm -i centos-gpg-keys-8-3.el8.noarch.rpm
(снова, если версия отличается, вам нужно будет подкорректировать имя пакета)
2- Error: GPG check FAILED
есть несколько решений для этого.
sudo dnf clean all
,sudo yum clean metadata
иdnf clean all
, затем переименуйте/etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
, затем попробуйте снова установить ваш пакет.- Временно отключите
GPG check
, если решение выше не устранило проблему - Проверьте, есть ли у вас программа безопасности, которая может вызвать проблему, такая как Zscaler.
Ошибка описана здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1896046
Она исправлена в версии rpm-4.14.3-12 и выше, но из-за бага новая версия из репозитория не может быть установлена. Вы можете вручную загрузить и установить более раннюю версию, такую как rpm-4.14.3-26.
Сначала проверьте, можете ли вы обновить:
dnf upgrade rpm rpm-libs -y
Если это не работает, попробуйте следующие шаги:
Проверьте, используете ли вы версию 4.14.3, которая имеет эту проблему:
# rpm --version
RPM version 4.14.3
Если у вас другая версия, не продолжайте с последующими шагами.
Загрузите более старую версию RPM и его библиотеки:
wget https://rpmfind.net/linux/centos/8-stream/BaseOS/$HOSTTYPE/os/Packages/rpm-4.14.3-26.el8.$HOSTTYPE.rpm
wget https://rpmfind.net/linux/centos/8-stream/BaseOS/$HOSTTYPE/os/Packages/rpm-libs-4.14.3-26.el8.$HOSTTYPE.rpm
Извлеките RPM пакеты с помощью rpm2cpio и cpio:
rpm2cpio rpm-4.14.3-26.el8.$HOSTTYPE.rpm | cpio -idmv -D / -u
rpm2cpio rpm-libs-4.14.3-26.el8.$HOSTTYPE.rpm | cpio -idmv -D / -u
Обновите RPM с помощью dnf:
dnf upgrade rpm rpm-libs -y
Ответ или решение
Проблема установки пакетов с помощью YUM/DNF в CentOS 8: подробное руководство по решению ошибок
Проблемы с установкой пакетов в операционной системе, такой как CentOS 8, могут проявляться в различных формах, включая ошибки при проверке подписи, такие как «GPG check FAILED» и «signature hdr data: BAD». В данном руководстве мы рассмотрим возможные причины возникновения данных ошибок и предоставим шаги для их устранения.
1. Причины возникновения ошибок
Наиболее распространенной причиной неудачи при установке пакетов в CentOS 8 являются проблемы с кэшированными данными DNF или некорректные ключи подписи RPM. Это может происходить по ряду причин:
- Поврежденные или устаревшие кэшированные файлы.
- Поврежденные или отсутствующие GPG-ключи.
- Ошибки в самой версии RPM, используемой в вашей системе.
2. Способы устранения проблемы
2.1 Очистка кэша DNF
Первая рекомендация — это очистка кэша DNF. Выполните следующую команду:
sudo dnf clean all
Эта команда удалит все кэшированные файлы DNF, что может помочь устранить проблемы с некорректными данными.
2.2 Обновление GPG-ключей
Если проблема не решается, обновите ключи GPG, используя следующие команды:
- Загрузите последний GPG-ключ CentOS:
curl https://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm -o centos-gpg-keys-8-3.el8.noarch.rpm
- Установите загруженный GPG-ключ:
sudo rpm -i centos-gpg-keys-8-3.el8.noarch.rpm
2.3 Проверка версии RPM
Ошибки могут быть также связаны с проблемами в самой версии RPM. Выполните команду для проверки текущей версии:
rpm --version
Если версия RPM — 4.14.3, она имеет известные проблемы. В этом случае следуйте приведенным ниже шагам.
2.4 Установка более ранней версии RPM
Если у вас установлена версия 4.14.3 и выше, вероятно, вам стоит установить более старую версию.
- Скачайте RPM и RPM-libs:
wget https://rpmfind.net/linux/centos/8-stream/BaseOS/$HOSTTYPE/os/Packages/rpm-4.14.3-26.el8.$HOSTTYPE.rpm
wget https://rpmfind.net/linux/centos/8-stream/BaseOS/$HOSTTYPE/os/Packages/rpm-libs-4.14.3-26.el8.$HOSTTYPE.rpm
- Извлеките пакеты с помощью
rpm2cpio
иcpio
:
rpm2cpio rpm-4.14.3-26.el8.$HOSTTYPE.rpm | cpio -idmv -D / -u
rpm2cpio rpm-libs-4.14.3-26.el8.$HOSTTYPE.rpm | cpio -idmv -D / -u
- Наконец, обновите RPM с помощью DNF:
sudo dnf upgrade rpm rpm-libs -y
2.5 Временное отключение проверки GPG
Если все предыдущие методы не помогли, вы можете временно отключить проверку GPG:
sudo dnf --nogpgcheck install gcc tcl
Однако, использование данного метода не рекомендуется как постоянное решение, так как это снижает уровень безопасности системы.
2.6 Проверка на наличие конфликтов
Также рекомендуем проверить систему на наличие приложений или служб, которые могут блокировать процесс установки пакетов, таких как Zscaler или другие инструменты безопасности.
Заключение
Проблемы с установкой пакетов на CentOS 8 могут быть вызваны множеством факторов, включая кэш, GPG-ключи и версии RPM. Следуя вышеизложенным шагам, вы сможете эффективно устранить ошибки, связанные с установкой пакетов, и обеспечить стабильность работы вашей системы. Для получения дополнительной информации вы можете ознакомиться с более полным описанием проблемы по следующей ссылке: Red Hat Bugzilla.
Настоятельно рекомендуем поддерживать вашу систему в актуальном состоянии, регулярно обновляя пакеты и проверяя целостность ключей подписи, чтобы избежать встреч с подобными проблемами в будущем.