Заставить 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 предоставляет виртуальный пакет веб-сервера , поэтому он не хочет устанавливать пакет httpd из base для выполнения виртуальной зависимости веб-сервера ?

3
задан 14 April 2016 в 22:18
2 ответа

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

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

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

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

1
ответ дан 3 December 2019 в 07:24

С помощью диспетчера пакетов 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 
2
ответ дан 12 August 2020 в 11:40

Теги

Похожие вопросы