Warum installiert Puppet ein Paket weiter, auch wenn es bereits installiert ist?
8946
michal
Ich verwende das Paketattribut install, um sicherzustellen, dass das angegebene Paket Xinstalliert ist.
Obwohl das Paket installiert ist, puppetversucht es jedoch, es erneut zu installieren, und es wird natürlich mit einer Ausnahme beendet ("X bereits installiert"). Dies geschieht nicht, wenn der Paketname mit einem Servicenamen übereinstimmt. Ich verwende lokales RPM und einen RPM-Anbieter.
Wie vermeide ich diese Ausnahme?
Ich habe auch eine Problemumgehung implementiert: Wenn die RPM-Installation erfolgreich ist, erstelle ich eine Datei mit dem Namen /X_DONE. Dann installiere ich die Abhängigkeiten basierend auf dieser Datei, nicht dem Paket.
err: /Stage[main]/Apache-php/Package[php_pdo]/ensure: change from absent to present failed: Execution of '/bin/rpm -i --oldpackage /tmp/puppet/php-pdo-5.1.6-27.el5_5.3.x86_64.rpm' returned 1: package php-pdo-5.1.6-27.el5_5.3.x86_64 is already installed
Wenn Sie die von Ihnen verwendeten Klassen / Manifeste bereitstellen können, ist die Diagnose einfacher.
Torian vor 13 Jahren
0
Dies ist alt, aber ... Das Beibehalten einer Kopie der installierten Pakete in / tmp ist wahrscheinlich auch nicht ideal, da dies zu einer Schleife führt, in der eine Bereinigung von / tmp (beim Neustart oder möglicherweise nachts) die RPM entfernt und Marionette kopiert es wieder. Sie verschwenden Speicherplatz in / tmp für ein bereits installiertes RPM. Wahrscheinlich ist es besser, ein Yum-Repo einzurichten, oder (insbesondere bei einem "installierten" im Gegensatz zu "neuesten") von einer http-URL zu installieren.
dannysauer vor 8 Jahren
0
2 Antworten auf die Frage
9
Slartibartfast
Sie verweisen auf das Paket mit dem Namen "php_pdo", aber Puppet sieht das Paket als "php-pdo" (Bindestrich, nicht Unterstrich). Bei jeder Überprüfung, ob php_pdo installiert ist, wird festgestellt, dass dies nicht der Fall ist. Leider spielt es keine Rolle, wie oft Sie php-pdo installieren, es wird nie php_pdo sein.
Um das Problem zu beheben, ändern Sie die Zeile:
package {"php_pdo":
sein:
package {"php-pdo":
wow, also sind $ namen so "schwer". Vielen Dank, es bringt Licht in mein System;)
michal vor 13 Jahren
0
0
Kit Ho
Ich glaube nicht, dass oben eine richtige Antwort ist.
Der Paketname sollte gemäß seinem Paketmanager gefunden werden.