Назад | Перейти на главную страницу

Заставьте 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 в своем файле спецификации со списком виртуальных пакетов, таких как webserver, и действительно, в src rpm для httpd есть строка Provides: webserver. Я предполагаю, что httpd24-httpd пакет, полученный мной из SCL, не имеет этого дескриптора.

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

С помощью диспетчера пакетов 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://serverfault.com/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 

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

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

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

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