Пользовательские группы YUM, охватывающие репозитории?

Вопрос или проблема

Мне сложно найти то, что я бы предположил, будет базовой функциональностью. В основном я хочу создать группу, определенную как ‘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 не может объединить группы из разных репозиториев автоматически.

Рекомендованное решение

  1. Создание отдельных компс-файлов для каждого репозитория.
    Вы должны создать два отдельных 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>
  2. Создание репозиториев.
    Теперь создайте репозитории с использованием соответствующих компс-файлов:

    createrepo -g comps-baseos.xml BaseOS/
    createrepo -g comps-appstream.xml AppStream/
  3. Указание групп в kickstart.
    В вашем kickstart файле вы можете указать, что требуется установить пакеты из обеих групп:

    %packages
    @baseosgroup
    @appstreamgroup

Альтернативные варианты

Если вам действительно нужно создать одну группу, которая охватывает оба репозитория, вы можете рассмотреть возможность создания кастомного репозитория, который будет содержать необходимые пакеты из обоих источников. В данном случае вам потребуется вручную собрать RPM-файлы и использовать createrepo, чтобы создать новый репозиторий.

Заключение

Создание пользовательских YUM групп, которые охватывают пакеты из нескольких репозиториев, требует внимательного подхода и понимания механизмов работы пакетного менеджера. Разделение на группы и создание индивидуальных компс-файлов для каждого репозитория позволяет избежать проблем с отсутствием пакетов. При правильной настройке вы сможете эффективно управлять установкой необходимых пакетов в RHEL 9, что значительно упростит процесс развертывания и управления системой.

Оцените материал
Добавить комментарий

Капча загружается...