Debian - Was tun, wenn Pakete aktualisiert werden und eine Konfigurationsdatei Änderungen aufweist?


8

Ich bin neu in der Systemadministration und helfe bei der Verwaltung eines Servers für eine Studentengruppe. Ich habe mich gefragt, was die beste Vorgehensweise ist, wenn Sie Pakete aktualisieren und eine Konfigurationsdatei Änderungen aufweist. Ich habe mir die Unterschiede angesehen und dann normalerweise nur die alte Version verlassen, es sei denn, es scheint, dass etwas Wichtiges hinzugefügt werden muss, und ansonsten die Konfigurationsdateien manuell mit kdiff3 zusammengeführt. Aber gibt es eine bessere Möglichkeit, dies zu tun?

Muss ich die alte Datei auch irgendwo selbst sichern oder erstellt dpkg automatisch eine Sicherung? Manchmal habe ich in einigen Verzeichnissen alte Dateien für alte Versionen von Konfigurationsdateien bemerkt.

Dieses Problem wird durch die Tatsache erschwert, dass ich, da ich neu in dieser Gruppe bin, nicht weiß, warum einige Änderungen so sind, wie sie sind, aber im Zweifelsfall habe ich auf die vorhandene Version verzichtet.

Übrigens möchte ich etwas Spezifität. Was tun Sie, wenn dpkg Sie beispielsweise mit der gesamten Y / N / I / O / D / etc-Sache auffordert? Sichern Sie die alte Datei, installieren Sie die neue und führen Sie sie dann zusammen, oder gibt es eine bessere Möglichkeit, die Dateien zusammenzuführen, wenn Sie sich in dieser ncurses-Eingabeaufforderung befinden?

Antworten:


9

das scheint ein vernünftiger Weg zu sein. ähnlich wie ich es seit ungefähr 15 Jahren mache (benutze Debian seit 1994). es hat immer bei mir funktioniert :)

Ich beginne mit der Grundannahme, dass ich, wenn ich eine Konfigurationsdatei geändert habe, einen guten Grund dafür hatte und meine Änderungen wahrscheinlich besser / wichtiger sind als alles in der neuen Standardkonfigurationsdatei.

Ich überprüfe dann sowohl meine Konfiguration als auch die neue Paketversion und entweder:

  1. Ignorieren Sie alle Unterschiede vollständig, da sie für mein Setup entweder nicht wichtig oder nicht relevant sind.

  2. Füge alles Nützliche aus der neuen Konfiguration in meine vorhandene Konfiguration ein.

  3. Wenn es viele neue Dinge gibt und nur eine kleine Menge meiner Änderungen, die ich behalten möchte, dann mache ich das Gegenteil und füge meine Änderungen in die neue Konfigurationsdatei ein und verwende diese dann.

Ich benutze keine speziellen oder GUI-Tools dafür. Ich benutze nur 'diff -u' und weniger und vi sowie gelegentlich einige der Standard-Textverarbeitungswerkzeuge wie sed oder perl. colordiff ist auch dann nett, wenn die diff-ausgabe mehr als ein bildschirm oder so ist.


1
Übrigens, klebt dpkg die neuen und alten Dateien automatisch irgendwo hin oder löscht es nur die alte Datei, wenn Sie die neue installieren?
Ibrahim

1
Ja, wenn Sie Ihre aktuelle Konfigurationsdatei ersetzen möchten, wird sie in Dateiname.dpkg-alt umbenannt. Wenn Sie Ihre aktuelle Konfigurationsdatei behalten möchten, wird die gepackte Datei in filename.dpkg-dist
cas

Übrigens ist diese Umbenennung in .dpkg-old und .dpkg-dist der Hauptgrund, warum Run-Parts standardmäßig keine Dateien mit a ausführen. in ihnen würde es sonst schlechte Dinge tun, wie sowohl die alte als auch die neue Version von Cron-Jobs in /etc/cron.*/ auszuführen, was ++ ungut wäre.
Cas

Genau wie diese Antwort zu bestätigen, ist es genau das, was ich seit vielen Jahren getan habe
LapTop006

Noch eine +1. Dieser Ansatz funktioniert sicherlich gut für eine einzelne oder eine kleine Anzahl von Systemen. Alles, was größer ist, und Sie sollten sich die Tools für das Konfigurationsmanagement ansehen.
Kamil Kisiel

1

Obwohl ich der Antwort von Craig Sanders zustimme, muss ich eine Einschränkung hinzufügen: Während vieler Upgrades (normalerweise zwischen Releases - wie Hardy -> Intrepid) meldet apt Konfigurationsdateien als Änderungen, wenn ich sie nicht geändert habe. Wenn ich sicher bin, dass ich keine Konfigurationsdatei geändert habe, entscheide ich mich einfach, die alte zu sichern und die Version des Paketverwalters beizubehalten.


1

Ich habe gerade diesen Beitrag entdeckt und nach der Antwort auf eine ähnliche Frage von mir gesucht.

Am Ende habe ich mich entschieden, ein Terminal zu öffnen, eine 3-Wege-Zusammenführung mit meld durchzuführen.

meld file.conf file.conf.dpkg-old file.conf.dpkg-new

Speichern Sie das Ergebnis in file.conf und fahren Sie fort


1
Das ist eine Antwort darauf, wie Änderungen zusammengeführt werden. Das OP fragt nach größeren Problemen, die durch das Bearbeiten von Konfigurationsdateien verursacht werden, die von einem Paketverwaltungssystem verwaltet werden.
Itsbruce

Heh, zu diesem Zeitpunkt weiß ich noch nicht einmal, worüber ich gefragt habe. Zusammenführungswerkzeuge sind natürlich nützlich. Eine Sache, die ich gefunden habe, seit ich dies gepostet habe und die sehr hilfreich ist, ist etckeeper. Zumindest für kleinere Systeme sehe ich keinen Grund, es nicht zu verwenden, es setzt / etc nur unter Versionskontrolle (in meinem Fall git), was ziemlich praktisch ist, wenn Sie sich nicht sicher sind, welche Änderungen Sie in der Vergangenheit vorgenommen haben. Die automatischen Commits sagen Ihnen jedoch nicht, warum Sie etwas getan haben.
Ibrahim

0

Ja, das Beste ist, IMHO, die Betreuerversion zu erhalten und darin die benutzerdefinierten Werte zu melden.

Auf diese Weise wird sichergestellt, dass Sie über die aktuelle Konfigurationsdatei mit aktualisierten Kommentaren, auskommentierten Standardwerten usw. verfügen.

Wenn Sie aufgrund einer neuen Konfigurationsdateiversion einen Konflikt beim Aktualisierungsprozess haben, ist es am besten, das Beste zwischen unserer Version und der Version des Betreuers zu behalten. Notieren Sie sich die zu überprüfende Datei und bearbeiten Sie die Datei manuell, um die Unterschiede zusammenzuführen von Hand ( vimdiff ist ein sehr mächtiger Weg, aber kdiff ist auch eine gute Wahl :)

Das Wichtigste ist, zu vermeiden, dass benutzerdefinierte Konfigurationsdateien veraltet sind !

Meine 2 Cent :)


Hmm, ich sollte mein Vimfoo zum Schnupftabak bringen. Ich habe Vimtutor durchlaufen und es scheint ziemlich nett zu sein, aber ich habe Emacs wegen Elisp und seiner Anpassbarkeit bevorzugt. Aber emacs ist nervig, ssh und eine schlechte Verbindung zu überfahren, während vim nicht so schlecht ist.
Ibrahim

1
Das Problem beim Akzeptieren der Betreuerversion besteht darin, dass es weitaus wahrscheinlicher ist, dass Ihr derzeit funktionierendes Setup beschädigt wird (weil dadurch Ihre handbearbeiteten Änderungen gelöscht werden), als wenn Sie Ihre angepasste Version beibehalten. Es ist äußerst selten, dass ein aktualisiertes Paket eine inkompatible neue Konfigurationsdatei enthält (und wenn dies der Fall ist, verfügt das Paket häufig über ein Postinst-Skript, um dies zu handhaben), sodass die Aufbewahrung Ihrer Konfigurationsdatei im Allgemeinen sicher ist. In den meisten Fällen funktioniert Ihre Konfigurationsdatei einwandfrei, da keine zusätzliche Arbeit erforderlich ist. Die Betreuerdatei muss jedoch immer bearbeitet werden, um Ihre Änderungen wiederherzustellen.
Cas

Ich habe nicht gesagt, dass ich die Betreuerdatei kaum akzeptieren soll, sondern unbedingt alle Anstrengungen unternehmen soll, um unsere Anpassung in der Senke zu halten! ... Entschuldigung, dass ich nicht so klar war
drAlberT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.