У нас есть внутренний сервер yum, содержащий несколько репозиториев (копии репозитория RHEL, собственные программы и т. Д.). Наши внутренние системы отключены от Интернета, поэтому они могут использовать только наш внутренний сервер.
Для того, чтобы протестировать патчи перед их stableполным внедрением , у нас есть репозиторий, который включен по умолчанию. Любые обновления помещаются в -latestрепо. Когда мы исправляем серверы, мы используем этот -latest-repo для создания нового базового уровня и тестирования его на нескольких серверах. После тестирования мы делаем эту основу новой stable. По -latestумолчанию репо отключены.
Одно из репозиториев используется для нескольких пакетов, которые мы получаем из epel, rpmforge и так далее. У нас есть скрипт, который синхронизирует только нужные нам пакеты с любыми зависимостями, которые им нужны. После синхронизации пакетов репо перестраивается каждую ночь с помощью createrepo. Поскольку эти пакеты не протестированы, они попадают в int-optional-latestрепозиторий, который обычно отключен. Если серверу нужен пакет из этого репозитория, мы установим его с помощью enable-repo=int-optional-latest.
Сегодня коллега пытался установить Perl-Excel-Writer-XLSX на сервере. Сервер не нашел пакет. Я попытался пересоздать хранилище с помощью createrepo и извлек файлы repodata, чтобы убедиться, что файл был там. Это было. Я также проверил, что файл существует в хранилище, используя
repoquery -q --repoid=int-optional-latest -l perl-Excel-Writer-XLSX
Я также очистил кеш метаданных на стороне клиента, используя
sudo yum clean expire-cache
Несмотря на это, клиент продолжал утверждать, что пакет не существует на сервере.
Я не думаю, что проблема на стороне сервера, потому что, когда я попытался выполнить поиск с другого компьютера, он нашел пакет. Я проверил, что файлы репо были правильными и что имя yum.example.comразрешено на один и тот же IP-адрес на обоих серверах - но один из них может найти пакет, а другой - нет.