Я создаю и устанавливаю пользовательские RPM-пакеты на Centos / RHEL 6. При развертывании на контейнерах и виртуальных машинах все работает, как и ожидалось, однако на производственной коробке у нас есть дополнительные внутренние репозитории. yum install my.rpm
приводит к конфликту с php70w-*
:
Ошибка: php70w-common конфликтует с php-common-5.3.3-46.el6_7.1.x86_64
Вы можете попробовать использовать —skip-broken, чтобы обойти проблему.
попробуйте запустить: rpm -Va —nofiles —nodigest
Выбранная версия php должна быть 5.3.3 из-за требований RPM. php-gd
указан в .spec
что обеспечивает, что:
---> Package php-gd.x86_64 0:5.3.3-46.el6_7.1 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.3-46.el6_7.1 for package: php-gd-5.3.3-46.el6_7.1.x86_64
Интересно то, что если я установлю все php-*
пакеты вручную (в точности как указано в .spec
файл), а затем установить пакет все работает. (Это подтверждает, что конфликт не имеет ничего общего с зависимостями rest / non-php). Обратите внимание, что у меня есть AutoReqProv: no
в спецификации …
Вопросы:
my.rpm
только установка?Решения, которые я рассмотрел:
Явно изложить версию <=5.4
во всех требованиях PHP. Однако, так как я не знаю, что заставляет Yum Pick версии 7, я не уверен, что это будет работать. Кроме того, я предпочитаю сохранять зависимости от версии, если это возможно. Как только все необходимые модули php будут доступны в php 7 или когда наше программное обеспечение изменится, и мы отбросим php-gd
было бы неплохо портировать на php 7 без изменения всех версий в спецификациях.
В определении репозитория на хосте я могу исключить пакет. Я хотел бы избежать этого — я контролирую спецификацию RPM, но репозитории устанавливаются системными администраторами (с использованием puppet)
my.rpm
, Решение мне не нравится, потому что мы делим установку на два этапа и две разные системы: puppet и rpm.Любая помощь и / или идеи будут оценены
php70w-common
выглядит как пакет webtatic или атомного репо.
В любом случае вам нужно определить, к какому репо он принадлежит, либо выборочно исключить репо во время установки, либо настроить приоритеты репозитория.
Вы можете легко узнать с помощью:
yum info php70w-common
Я предпочитаю подход приоритетов, который является более чистым и более портативным.
Других решений пока нет …