Заставьте Yum признать, что httpd24-httpd (из SCL) предоставляет виртуальный пакет веб-сервера

Недавно я обнаружил коллекции программного обеспечения и понял, как они позволяют мне устанавливать несколько версий программного обеспечения, представляя пространство имен для каждой коллекции. В Enterprise Linux это очень удобно, потому что я буду в состоянии поддерживать постоянную стабильность своей системы, а теперь буду легко обновлять определенные версии программного обеспечения по мере их обновления (не только обновления безопасности, но и функции!)

Я хотел бы, чтобы основной веб-сервер моей системы был httpd 2.4. Версия доступна с centos-sclo-rh коллекция программного обеспечения в настоящее время 2.4.12, а версия доступна с base только 2.4.6. Поэтому я установил httpd с этого SCL и включил его:

> scl enable httpd24-httpd bash

А потом включил и запустил сервис с помощью systemctl

> systemctl enable httpd24-httpd
> systemctl start http24-httpd

Поэтому я ожидаю, что моя система должна понимать, что у меня теперь установлен веб-сервер. Тем не менее, когда я пытаюсь установить phpmyadmin из epel, он все еще хочет установить стандарт httpd пакет из base как зависимость.

Рассматривая немного механики rpms, я только что узнал, что пакеты могут иметь строку Provides в своем spec-файле со списком виртуальных пакетов, таких как webserverи действительно, src rpm для httpd содержит строку веб-сервера Provides:. Я предполагаю, что httpd24-httpd пакет, полученный из SCL, не имеет этого дескриптора.

Как я могу заставить мою систему распознавать установленное и включенное httpd от SCL обеспечивает webserver виртуальный пакет, так что он не хочет устанавливать httpd пакет из base выполнить webserver виртуальная зависимость?

1 ответ

Решение

Как предложил @Michael Hampton, я обратился к группе SCL, поскольку она поддерживает httpd24-httpd пакет (и многие другие). Вот ответ, который я получил от Джо Ортона:

Ожидается, что SCL не будут совместимы на уровне пакетов с системными пакетами по определению. Пакеты, которые зависят от "веб-сервера", обычно хотят перенести файл конфигурации в /etc/httpd/conf.d, как вы обнаружили, и это не работает с SCL httpd24.

Теоретически вы можете преодолеть разрыв между пакетами, для которых требуется "веб-сервер" и httpd24: собственный /etc/httpd/conf.d, перетащить файл в /opt/rh/.../conf.d/, для которого есть IncludeOptional. каталог и предоставить "веб-сервер". Не уверен, что я бы порекомендовал это, но должно быть возможно начать работать с некоторыми взломами.

В этом конкретном случае я ценю простоту обслуживания системы по сравнению с меньшим объемом установленного программного обеспечения, вызванным тем, что не нужно httpd а также httpd24-httpd установлены; поэтому я установил оба, и я в порядке с этим. Если вы действительно не хотите, чтобы эти два пакета были установлены одновременно, то Джо предложил возможный способ продвижения вперед, который вы могли бы рассмотреть.

С помощью диспетчера пакетов RPM вы можете просто указать foo 4 bar. Это дурацкий пример фиктивной спецификации, пуристы удалят предупреждения rpmlint;-):

$ cat ~/rpmbuild/SPECS/provides-httpd.spec 
Summary:   Dummy package to provide with httpd for httpd24
Name:      provides-httpd
Version:   0.1
Release:   1%{?dist}
License:   GPLv2
Requires:  httpd24-httpd
Provides:  httpd
BuildArch: noarch

%description
This is a no-brainer dummy package to provide httpd for SCL httpd24

You should read https://faultserver.ru/questions/770417/make-yum-recognize-that-httpd24-httpd-from-scl-provides-the-webserver-virtual

%files

Создайте это с помощью rpmdevtools и друзей:

$ rpmbuild -ba ~/rpmbuild/SPECS/provides-httpd.spec

Установите фиктивный пакет:

$ sudo yum install ~/rpmbuild/RPMS/noarch/provides-httpd-0.1-1.el7.noarch.rpm 
Другие вопросы по тегам