У нас є внутрішній сервер yum, що містить кілька репостів (копії RHEL-репо, програми, створені власноруч тощо). Наші внутрішні системи відключаються від Інтернету, тому вони можуть використовувати лише наш внутрішній сервер.
Для того, щоб перевірити виправлення, перш ніж підштовхувати їх до виробництва, у нас є stable
репо, яке включено за замовчуванням. Будь-які оновлення ставлять у -latest
репо. Коли ми виправляємо сервери, ми використовуватимемо це -latest
-repo, щоб створити нову базову лінію та протестувати її на кількох серверах. Після тестування ми робимо цю базову лінію новою stable
. В -latest
операції РЕПО за замовчуванням відключені.
Один із репостів використовується для декількох пакетів, які ми отримуємо з epel, rpmforge тощо. У нас є сценарій, який синхронізує лише ті пакети, які ми хочемо, з будь-якими необхідними їм залежностями. Після синхронізації пакетів репо-нове відбудовується щорічно з kreaterepo. Оскільки ці пакети не перевірені, вони потрапляють у 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-адресою на обох серверах - все ж один з них може знайти пакет, а другий не може.