Красные шапки и локальные репозитории

топ 100 блогов klink0v03.08.2025

По тегу "redhat" можно узреть всю мою ненависть к красным шапкам. Там и tuned, и невозможность запустить инсталлятор с небольшим количеством оперативной памяти, и дурную Anaconda, и тупую разбивку по пакетам, и всратый менджер пакетов в принципе, и странные настройки по умолчанию в sysctl, и много-много-много чего ещё. Недавно общий список пополнился ещё рядом идиотизмов.

Озаботился я тут, значит, созданием локального зеркала репозиториев для Rocky Linux. Ибо заказчики требуют собирать софт под эту блевотину. А в свете санкций-уянкций и всех этих рoскoмпoзoрoвских обострений размещенные на популярных CDNах зеркала частенько бывают недоступны. И да, есть ещё один неочевидный нюанс. Те самые CDNы часто анализируют в том числе заголовок User-Agent, с которым к ним пришел клиент. И шаг вправо, шаг влево, — вся твоя автоматизация летит к какой-то там матери. Потому что, например, тот же Ansible при скачивании пакета передает серверу совсем не такой же заголовок "User-Agent" как DNF.

Ладно. Делаем локальное зеркало. Но каким способом? Официальный рекомендуемый расово правильный метод — rsync. Одна беда: он требует ну о-о-о-о-о-очень овердохрена места на дисках и трафика. А как-то отфильтовать "нужное" от "ненужного" нереально. Поэтому есть второй способ: через плагин для самого DNF. Вторая беда: тебе надо как-то запустить на своём сервере этот самый DNF. И никто не обещал что в твоём любимом дистрибутиве он будет в наличии (в Debian-е, к счастью, есть).

Дальше ждет следующая неприятность. В Debian-е для полноценной работы требуется фактически два репозитория: основной и с обновлениями безопасности. Всё остальное прописывается как секции внутри этих репозиториев. То есть по сути, тебе надо вытягивать пакеты всего с двух URL-ов. И если мы берем утилиту debmirror (это набор perl-овых скриптов), то в ней по мере надобности можно указать дополнительные правила вида "не скачивать debug-пакеты, не скачивать dev-пакеты" и так далее.

В красных шапках всё сильно замороченнее. Для минимальной работы требуются аж шесть разных репозиториев: BaseOS, AppStream, Extras, EPEL, Cloud-kernel, Cloud-common. Каждый из них имеет свой собственный отдельный URL и требует отдельной настройки в конфигурации DNF.

Но и это ещё не всё. Если вы не хотите вытягивать весь репозиторий со всеми архивами вглубь веков до 2000-мохнатого года (а очень многие наподобие того же Azul любезно предоставляют всем желающим такую возможность), то вы в принципе можете взять только самые последние версии, но тогда... в дополнение к DNF вам понадобится ещё одна специальная утилита, чтобы построить индекс вашего зеркала после вытягивания. Которая тоже требует определённой настройки.

Но допустим, вы таки продрались сквозь все эти трудности и таки смогли сделать локальное зеркало так, как задумывали. Но расслабляться рано. Это только полпути. Надо ещё перенастроить на него потребителей, то есть ваши "обычные боевые" виртуалки. А это сделать тоже не так просто как хотелось бы. Нельзя просто так взять и поменять пару строчек в "sources.list" как в Debian.

Штука в том, что красные шапки комплектуются пакетами с именем "блаблабла-release". И при обновлении до следующего минорного выпуска эти самые "блаблабла-release" перезатрут настройки вашего DNF. Ладно, ф топку эти "*-release", сносим. Но вот пичалька: пакет "rocky-release" снести нельзя.

"А хули нам, кабанам", — подумал сисадмин, и удалил "rocky-relese" через "rpm -e --nodeps". И... при следующей перезагрузке система тупо не запустилась. Оказывается, в пакете "rocky-release" находится файл "/etc/os-release" (точнее, симлинк, но это уже детали), который оказывается, сцуко, жизненно важен для монтирования корневого раздела, ибо initramfs проверяет его наличие на файловой системе. И если не обнаруживает оного, то вываливается с ошибкой "корневая ФС не найдена". Упс, вот это да! Новейшие японские технологии!

Ладно. Возвращаем взад пресловутый rocky-release. Но что же делать чтобы не затирались настройки DNF? Ответ: ни в коем случае не трогать "оригинальные" файлы в "/etc/yum.repos.d". А только отключить в них все ненужные репозитории "enabled=0", а в нужных закомментировать "mirrorlist=" и прописать локальные "url=". Ну и не пытаться ставить какие-либо ещё "*-release" помимо пресловутого "самого главного" rocky-release.

Фуф.

Как в старом анекдоте: "А всё-таки с яблоками как-то сильно проще было".

Вы всё ещё хотите использовать красные шапки у себя в проде?

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
В Красноярске очень жарко для Тёмы и в ожидании поездки на дачный участок котёнку приходится в будни страдать в городской квартире от зноя, стараясь как можно меньше двигаться, чтоб не перегреться. Грустно, господа.. Чтоб взбодрить Тёму, приходится даже придумывать всякие ...
Министр курортов и туризма Крыма Елена Юрченко, размышляя о будущем курортном сезоне напомнила, что власть оккупированного Россией полуострова надеется пополнить свой бюджет в т.ч. и за счет туристов из Украины, – передает tass. «Мы ждем туристов из всех стран. Есть заявки из Финлянд ...
Посмотрела фильм "Супернова" (2020), который уже 11 марта появится в кинотеатрах. Он рассказывает историю двух влюбленных мужчин. Один из них тяжело болен и умирает. Они ...
Чё у нас в стране и мире еще делается? О, вот нашла! Диме Диброву предложили работу. Очень хорошо. Я щитаю мужчина должен быть добытчиком. Ну, вот так вот повелось со времен пещерного человека. Женщинам за мамонтами не очень доверяли бегать. А то вдруг не убежит женщина? Кто рожать ...
Самое сложное - надеть кроссовки. Заставить себя выкатиться из дома по узкой лестнице, застеленной ковролином. Вставить наушники. Засечь таймер. Поправить ...