2017-01-25 2 views
0

Ich baue und installiere benutzerdefinierte RPMs auf Centos/RHEL 6. Bei der Bereitstellung auf Containern und VMs funktioniert alles wie erwartet, auf der Produktionsbox haben wir jedoch zusätzliche, interne Repositories. yum install my.rpm führt zu einem Konflikt mit php70w-*:Ist yum verwirrt oder bin ich es?

Error: php70w-common conflicts with php-common-5.3.3-46.el6_7.1.x86_64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest

Die PHP-Version 5.3.3 die dazu, die RPM-Anforderungen gewählt sollte. php-gd ist in den .spec aufgeführt, die erzwingt, dass:

---> 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 

Das Interessante daran, dass, wenn ich alle php-* Pakete von Hand installieren (genau wie in der .spec Datei aufgelistet) und dann das Paket alles funktioniert installieren. (Dies stellt sicher, dass der Konflikt nichts mit den restlichen/nicht-php-Abhängigkeiten zu tun hat). Beachten Sie, dass ich AutoReqProv: no in der Spezifikation haben ...

Fragen:

  • ich, dass yum wählt 5.3.3 PHP annehmen würde, weil alle Abhängigkeiten ohne Konflikte zufrieden sind ... warum tut nicht, dass ?
  • Wie kann ich dieses Verhalten für my.rpm Installation nur verhindern?

Die Lösungen, die ich in Betracht gezogen haben, sind:

  • Explizit Zustand Version <=5.4 in allen PHP-Anforderungen. Da ich jedoch nicht weiß, was yum Version 7 ausmacht, bin ich mir nicht sicher, ob das funktioniert. Außerdem bevorzuge ich es, Abhängigkeiten möglichst versionslos zu halten. Sobald alle benötigten PHP-Module in PHP 7 verfügbar sind oder unsere Software sich ändert und wir php-gd löschen, wäre es nett, auf PHP 7 zu portieren, ohne alle Versionen in Spezifikationen zu ändern.

  • In der Repository-Definition auf dem Host kann ich das Paket ausschließen. Ich möchte das vermeiden - ich kontrolliere die RPM-Spezifikation, aber die Repositories werden von sysadmins gesetzt (mit Marionette)

  • Instruct Marionette, um alle php Abhängigkeiten zuerst zu installieren und dann deploy my.rpm. Eine Lösung, die ich nicht mag, weil wir die Installation in zwei Schritten und zwei verschiedenen Systemen aufteilen: Puppet und RPM.

Jede Hilfe und/oder Ideen würden

Antwort

2

php70w-common sieht aus wie ein webtatic oder Atom Repo-Paket geschätzt.

In beiden Fällen müssen Sie bestimmen, zu welchem ​​Repo es gehört, entweder um den Repo während der Installation selektiv auszuschließen oder die Repository-Prioritäten zu konfigurieren.

Sie können ganz einfach herausfinden, mit:

yum info php70w-common 

ich die Prioritäten Ansatz bevorzugen, die sauberen und tragbar ist.

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

Verwandte Themen