(Gelöst) conf file nach online update ersetzt?

Status
Für weitere Antworten geschlossen.

g-mac

New Member
Hallo,

bin neu hier und absoluter newbie was das bauen von RPMs betrifft.
Möglich bin ich auch hier falsch gelandet. Also bitte nicht verhauen ;)

Da ich mich in deployment und RPM-Bau einarbeiten soll, habe ich mit einen kleinen Paket den cntlm
angefangen. HIer ging es um die cntlm.conf so zu bearbeiten, dass diese später nach der Verteilung und install nicht mehr von den Admin oder user angepasst werden muss.

Zuerst besorgte ich mir das src.rpm bei SuSE repo, (cntlm-0.35.1-2.2.src.rpm) dann etpacken/installieren etc.
Code:
# rpm -i cntlm-0.35.1-2.2.src.rpm
in etwa wie im HowTo von Rain_Maker hier. Dann die unter /usr/src/packages/SOURCES/cntlm-0.35.1/doc/cntlm.conf bearbeitet, ein diff um patch file zu erstellen durchgefürt und das spec file bearbeitet. Dabei ersetzte ich im spec file
Code:
Patch: %{name}-0.35.1-config.patch
durch -meinconfig.patch
Der build verlief erfolgreich und ich erhielt ein neues RPM, das auch nach der installation funktionierte.
Allerdings nach einem online Update wurde die cntlm.conf durch das Standard ersetzt.
Was habe ich da falsch gemacht? Bin ein wenig :confused:

LG und vielen Dank im Voraus
Gregor
 

Rain_Maker

Administrator
Teammitglied
AW: conf file nach online update ersetzt?

Befrage mal die Suchmaschine Deines geringsten Mißtrauens nach "RPM Macros", besonders nach dem Macro "%config".


//Edit:

http://www.linux-club.de/viewtopic.php?f=62&t=109425

=> Bitte Querverweise setzen oder ich werde hier schliessen (siehe Forenregeln).

Außerdem haben die Leser des Linux-Club auch ein Recht darauf hier eventuell gefundene/erarbeitete Lösungen/Ansätze zu erfahren.
 

g-mac

New Member
AW: conf file nach online update ersetzt?

:eek:ps: SORRY Klar... Asche auf mein Haupt!

Meinst Du etwa dieses:
<snip>
%files
%config(noreplace) %{_sysconfdir}/%{name}.conf
<snapp>

Bedeutet das, dass nach der Installation meines Paketes das conf file durch ein Update nicht angefasst wird?
Oder, dass wenn mein Paket zum Update benutzt wird, die bereits bestehende conf files nicht überschreibt?

Gruß
 

Rain_Maker

Administrator
Teammitglied
AW: conf file nach online update ersetzt?

Nein, ganz so einfach ist es dann doch wohl nicht.

Dieses "noreplace" bedeutet AFAIK so viel wie "Ersetze die Datei nicht, wenn sie _nachträglich_ (vom Benutzer) verändert wurde".

(Würde auch gut zu dem Verhalten passen, welches ich bei ein paar entsprechenden Paketen beobachten konnte.)

Dies ist natürlich so nicht der Fall, denn durch den Patch wird sie vor der Installation schon verändert, RPM erkennt beim Update "Datei wurde seit Installation nicht verändert" und überschreibt sie _richtigerweise_, denn sonst wäre "noreplace" eine sehr gefährliche Option, die es einem unmöglich machen würde Fehler in Konfigurationsdateien zu beheben, das wäre also ziemlich dumm.

Soviel ich weiß, überprüft RPM Checksummen der installierten Dateien und entscheidet so, ob eine Datei verändert wurde oder nicht, ein einfaches "touch" in %post würde also nicht reichen.

Trotzdem könnte man damit etwas basteln, z.B. daß man in %post eine weitere Zeile mit einem Kommentar an besagte Datei anfügt, danach sollte RPM diese Datei als "vom Nutzer verändert" anerkennen und nicht mehr anfassen.

Das impliziert natürlich auch, daß Ihr Euch dann im weiteren Verlauf trotzdem immer noch selbst um die vom Distributor bereitgestellten Updates kümmern müsst und diese zumindest bei jedem Update überprüfen solltet, ob sich etwas an der dort mitgelieferten Konfigurationsdatei verändert hat, so etwas wie "install and forget" ist nicht.

Greetz,

RM
 

g-mac

New Member
AW: conf file nach online update ersetzt?

Vielen Dank für Deine Antwort.

Ich probierte Dein Vorschlag aus und hängte ein # an das .conf file an.
Also in %post den Ausgabekanal (stdout) in die Datei umlenken.... Das war's ;)

So wie ich das jetzt verstehe, bleibt das Programm von Updates nicht ganz verschont.
(gut so) Wenn dann in dem Update RPM in %files das %config(noreplace) vorhanden ist
und in Repos etwas "neueres" als das installierte sein sollte, so würde der Beschreibung nach hier das conf file
in .rpmnew gespeichert und das Original .conf unverändert bleiben?

Ich habe ein Update danach durchgeführt. Ohne Veränderung. D.h. conf file blieb wie gewollt unverändert,
aber das .rpmnew wurde auch nicht erstellt.

Wie auch immer, Dein Vorschlag war genau die Lösung *freu*

LG
Gregor
 
Status
Für weitere Antworten geschlossen.
Oben