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