Вопрос или проблема
На RHEL9 я создал локальное YUM-репозиторий, скопировал все файлы в /RHEL9-REPO.
Содержимое /etc/yum.repos.d/rhel-lcoal.repo
[rhel-baseos]
name= RHEL 9.0 Local BaseOS YUM REPO
baseurl= file:///RHEL9-REPO/BaseOS
enabled=1
gpgcheck=0
[rhel-AppStream]
name= RHEL 9.0 Local AppStream YUM REPO
baseurl= file:///RHEL9-REPO/AppStream
enabled=1
gpgcheck=0
Когда я запускаю “dnf clean all” и “dnf repolist -v”, появляется эта ошибка
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, uploadprofile
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
DNF version: 4.10.0
cachedir: /var/cache/dnf
RHEL 9.0 Local BaseOS YUM REPO 94 MB/s | 1.7 MB 00:00
Errors during downloading metadata for repository 'rhel-baseos':
- Downloading successful, but checksum doesn't match. Calculated: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(sha256) Expected: 951a2367c42d5c3fb70e6d8ad430d120cc32e639b361139eaf68d8d2c6569003(sha256)
Error: Failed to download metadata for repo 'rhel-baseos': Yum repo downloading error: Downloading error(s): repodata/951a2367c42d5c3fb70e6d8ad430d120cc32e639b361139eaf68d8d2c6569003-productid.gz - Cannot download, all mirrors were already tried without success
Вам нужно создать метаданные вручную для локального репозитория, чтобы избавиться от этой ошибки.
Вот что вы можете сделать:
createrepo -v /RHEL9-REPO/BaseOS/
createrepo -v RHEL9-REPO/AppStream
Эта команда может занять несколько минут, в зависимости от вашей машины и количества пакетов RPM.
dnf clean all
dnf repolist -v
Это решит вашу проблему.
Ответ или решение
Теория
Ошибка "Downloading successful, but checksum doesn’t match" при работе с локальным YUM-репозиторием в RHEL (Red Hat Enterprise Linux) указывает на то, что метаданные, включая контрольные суммы файлов, не совпадают с ожидаемыми. Это часто возникает, если метаданные репозитория не были должным образом созданы или обновлены. Контрольные суммы используются для проверки целостности и подлинности загружаемых файлов, что необходимо для предотвращения установки поврежденного или поддельного программного обеспечения.
Пример
Вы создали локальный YUM-репозиторий на машине с RHEL9, разместив все необходимые пакеты в директориях /RHEL9-REPO/BaseOS
и /RHEL9-REPO/AppStream
. Конфигурационные файлы репозитория находятся в /etc/yum.repos.d/rhel-local.repo
и выглядят следующим образом:
[rhel-baseos]
name= RHEL 9.0 Local BaseOS YUM REPO
baseurl= file:///RHEL9-REPO/BaseOS
enabled=1
gpgcheck=0
[rhel-AppStream]
name= RHEL 9.0 Local AppStream YUM REPO
baseurl= file:///RHEL9-REPO/AppStream
enabled=1
gpgcheck=0
При выполнении команд dnf clean all
и dnf repolist -v
система выдает ошибку контрольной суммы, что указывает на проблему в метаданных репозитория.
Применение
Чтобы устранить данную ошибку, необходимо вручную создать или обновить метаданные для вашего локального репозитория. Это можно сделать с помощью утилиты createrepo
. Выполните следующие команды для генерации правильных метаданных в директориях вашего репозитория:
createrepo -v /RHEL9-REPO/BaseOS/
createrepo -v /RHEL9-REPO/AppStream
Эти команды создадут файлы метаданных, включая необходимые контрольные суммы, которые будут использоваться DNF для проверки загружаемых пакетов. Выполнение этих операций может занять некоторое время в зависимости от количества RPM-пакетов и производительности вашей системы.
После генерации метаданных необходимо очистить кэш DNF и заново загрузить репозиторий:
dnf clean all
dnf repolist -v
Эти действия должны исправить ошибку контрольной суммы и обеспечить корректную работу вашего локального YUM-репозитория.