Вопрос или проблема
Мне сложно найти то, что я бы предположил, будет базовой функциональностью. В основном я хочу создать группу, определенную как ‘mygroup’, которая включает пакеты как из BaseOS, так и из AppStream в RHEL9.
Я пытался создать один файл comps, который включает информацию о группе, и создать каждый репозиторий с этим файлом comps, но это обычно приводит к тому, что yum (kickstart Anaconda) жалуется Нет соответствия для пакетной группы: foo
для подмножества пакетов в группе.
Например, структура:
- BaseOS/foo.rpm
- AppStream/bar.rpm
- AppStream/baz.rpm
А вот и файл comps:
<group>
<id>mygroup</id>
<packagelist>
<packagereq type="mandatory">foo</packagereq>
<packagereq type="mandatory">bar</packagereq>
<packagereq type="mandatory">baz</packagereq>
</packagelist>
</group>
</comps>
Создание репозиториев:
createrepo -g comps.xml AppStream/
createrepo -g comps.xml BaseOS/
И мой kickstart:
%packages
@mygroup
В основном приводит к тому, что некоторые пакеты не находятся, установка продолжается (несмотря на то, что они помечены как обязательные) и просто не устанавливает их.
Есть ли секрет в том, чтобы группа yum охватывала несколько репозиториев? Или группа является подмножеством того, что делает репозиторий ‘репозиторием’?
Ответ или решение
Вопрос о том, как создать пользовательские группы YUM, которые охватывают разные репозитории в RHEL 9, действительно может вызвать трудности. Рассмотрим детально все шаги, которые помогут вам правильно реализовать эту функциональность.
Понимание структуры YUM и репозиториев
В RHEL (Red Hat Enterprise Linux) управление пакетами осуществляется с помощью YUM (Yellowdog Updater, Modified), и каждая группа пакетов организована внутри отдельных репозиториев. Это создает определенные ограничения на возможность объединять пакеты из разных репозиториев в одну группу.
Задача
Вы стремитесь создать группу под названием mygroup
, которая будет включать пакеты foo
из репозитория BaseOS и bar
и baz
из репозитория AppStream. При этом вы столкнулись с ошибкой No match for group package: foo
при попытке использовать эту группу в файле kickstart.
Создание компс-файла
Ваш компс-файл выглядит корректно, однако создание единственного компс-файла для репозиториев BaseOS и AppStream может быть неэффективным из-за того, что YUM не может объединить группы из разных репозиториев автоматически.
Рекомендованное решение
-
Создание отдельных компс-файлов для каждого репозитория.
Вы должны создать два отдельныхcomps.xml
файла, один дляBaseOS
, другой дляAppStream
. Это позволит YUM правильно идентифицировать пакеты, связанные с каждой группой.-
comps-baseos.xml
<comps> <group> <id>baseosgroup</id> <packagelist> <packagereq type="mandatory">foo</packagereq> </packagelist> </group> </comps>
-
comps-appstream.xml
<comps> <group> <id>appstreamgroup</id> <packagelist> <packagereq type="mandatory">bar</packagereq> <packagereq type="mandatory">baz</packagereq> </packagelist> </group> </comps>
-
-
Создание репозиториев.
Теперь создайте репозитории с использованием соответствующих компс-файлов:createrepo -g comps-baseos.xml BaseOS/ createrepo -g comps-appstream.xml AppStream/
-
Указание групп в kickstart.
В вашем kickstart файле вы можете указать, что требуется установить пакеты из обеих групп:%packages @baseosgroup @appstreamgroup
Альтернативные варианты
Если вам действительно нужно создать одну группу, которая охватывает оба репозитория, вы можете рассмотреть возможность создания кастомного репозитория, который будет содержать необходимые пакеты из обоих источников. В данном случае вам потребуется вручную собрать RPM-файлы и использовать createrepo
, чтобы создать новый репозиторий.
Заключение
Создание пользовательских YUM групп, которые охватывают пакеты из нескольких репозиториев, требует внимательного подхода и понимания механизмов работы пакетного менеджера. Разделение на группы и создание индивидуальных компс-файлов для каждого репозитория позволяет избежать проблем с отсутствием пакетов. При правильной настройке вы сможете эффективно управлять установкой необходимых пакетов в RHEL 9, что значительно упростит процесс развертывания и управления системой.