Ям смущен или это я?

Я создаю и устанавливаю пользовательские 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 в спецификации …

Вопросы:

  • Я бы предположил, что yum выберет php 5.3.3, потому что все зависимости выполняются без конфликтов … почему этого не происходит?
  • Как я могу предотвратить такое поведение для my.rpm только установка?

Решения, которые я рассмотрел:

  • Явно изложить версию <=5.4 во всех требованиях PHP. Однако, так как я не знаю, что заставляет Yum Pick версии 7, я не уверен, что это будет работать. Кроме того, я предпочитаю сохранять зависимости от версии, если это возможно. Как только все необходимые модули php будут доступны в php 7 или когда наше программное обеспечение изменится, и мы отбросим php-gdбыло бы неплохо портировать на php 7 без изменения всех версий в спецификациях.

  • В определении репозитория на хосте я могу исключить пакет. Я хотел бы избежать этого — я контролирую спецификацию RPM, но репозитории устанавливаются системными администраторами (с использованием puppet)

  • Поручите puppet сначала установить все зависимости php, а затем развернуть my.rpm, Решение мне не нравится, потому что мы делим установку на два этапа и две разные системы: puppet и rpm.

Любая помощь и / или идеи будут оценены

0

Решение

php70w-common выглядит как пакет webtatic или атомного репо.

В любом случае вам нужно определить, к какому репо он принадлежит, либо выборочно исключить репо во время установки, либо настроить приоритеты репозитория.

Вы можете легко узнать с помощью:

yum info php70w-common

Я предпочитаю подход приоритетов, который является более чистым и более портативным.

https://wiki.centos.org/PackageManagement/Yum/Priorities

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]