Frage

Wir sind mit rpm unsere Web-Anwendungen intern zu implementieren. Die rpm installiert die Dateien konfiguriert Apache, cron, Protokollierung und so weiter.

Ich mag eine Testversion der Umdrehungen pro Minute bauen, die mit einer anderen Konfiguration für Apache, cron und Protokollierung an einem anderen Ort installiert. Es sollte möglich sein, sowohl die Produktion und Test Umdrehungen pro Minute auf derselben Maschine zu installieren.

Mit beiden RPMs installiert ich so etwas wie

haben würde
/opt/app/www/...
/opt/app-test/www/...
/etc/httpd/conf.d/app.conf
/etc/httpd/conf.d/app-test.conf
/etc/cron.d/app
/etc/cron.d/app-test
/etc/init.d/app
/etc/init.d/app-test

Was wäre ein guter Weg, um dies zu erreichen?

  • die Spezifikation Kopieren und benennen Sie alles zu "test"?
  • Erstellen Sie verschiedenen Subpackages für prod / Test?
  • Verwenden Sie rpm Makros den Speicherort und Namen in der Spezifikation ändern?
  • Verwenden Sie rpm --relocate?

Gibt es eine bestehende Umdrehungen pro Minute, die dies zu tun versucht, dass ich sehen kann?

War es hilfreich?

Lösung

In meinen spec-Dateien, verwende ich die integrierten Makros und dann mit einem Testkonto (nicht root) und ein speziell abgestimmten ~ / .rpmmacros, ich den Standard-Präfix ändern:

%_prefix %{_home}

funktioniert.

Sie können sogar eine Test rpm-Datenbank erstellen:

$ rpmdb --initdb --dbpath /home/test/var/lib/rpm

und setzen diese in Ihrem .rpmmacros:

%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000

Andere Tipps

Auch wenn Sie eine andere Lösung haben, habe ich beschlossen, einen anderen Weg vorschlagen, dies zu erreichen. obwohl nichts falsch mit Virtualisierung. Wahrscheinlich eine bessere Lösung ohnehin eine Testumgebung auf der gleichen Maschine, da läuft die Produktion nicht sicher ist / sichern, denke ich. Das sagte ...

Ich würde wahrscheinlich eine Spec-Datei als Vorlage verwenden und dann das:

...
# somwwhere in the beginning of spec
%global testrel test

#rest of document
Source0: tarball-with-things%{?testrel}.tar.bz
...
%if ${?testrel:1}${!?testrel:0}
# this will execute only in test rpm
%endif
...

Beachten Sie, dass especailly der %{?testrel} Makro das Interessante ist. Es ermöglicht Ihnen, die Dinge gleichzeitig für beide Versionen zu aktualisieren, aber wenn Sie möchten etwas Bestimmtes zu einer Version zu halten oder die andere Sie noch können. Es erfordert auch keine Änderungen an der Datenbank, benutzerdefinierte Makros in ~ / .rpmmacros (die je nach System ändern würde es auf gebaut ist wird)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top