Заставьте 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