auf eine neue Version aktualisieren

Bei fli4l gibt es (noch?) kein automatisches Tool um seine Config-Dateien von einer Version auf die nächste zu ziehen. Es gibt zwar in der Dokumentation im Anhang eine Liste neuer und umbenannter Variablen, aber Neuerungen und Änderungen müssen von Hand übertragen werden. Damit dabei nichts verloren geht, bietet sich die Nutzung eines Dreiwege-Merge-Tools an. Dieses HowTo beschreibt wie man das unter Linux mit kdiff3 anstellt, lässt sich aber vermutlich leicht auf Windows und andere Tools (TortoiseMerge, WinMerge, …) übertragen.

Gegebenheiten und Vorbereitungen

Für dieses HowTo mache ich ein Upgrade von fli4l-3.9.0-rev26488-testing auf fli4l-3.9.0-rev26629-testing, mit der selben Vorgehensweise habe ich auch schon 3.7.x auf 3.9x gezogen oder 3.3.x auf 3.6.2, alles kein Problem. Die bestehende Installation liegt hier zunächst in einem Ordner hostname/fli4l-3.9.0-rev26488-testing und dort im Unterordner config. Zunächst listet man die genutzten Pakete und lädt sich die entsprechenden Tarballs runter und entpackt diese wie gewohnt. Danach liegen hier also die Ordner hostname/fli4l-3.9.0-rev26488-testing und hostname/fli4l-3.9.0-rev26629-testing vor. Der erste enthält im Unterordner config alle vom Nutzer zuletzt bearbeiteten und laufenden Configs und der zweite enthält ebenfalls im Unterordner config die default-Configs aus den soeben entpackten Tarballs. Im neuen Ordner sichere ich jetzt diese Default-Configs indem ich den Ordner hostname/fli4l-3.9.0-rev26629-testing/config nach beispielsweise hostname/fli4l-3.9.0-rev26629-testing/config_rev26629 kopiere. Es liegen also jetzt drei Ordner vor: die alte Config, die zukünftige Config und die gesicherte Default-Config der neuen Pakete.

Die Liste der Pakete ist natürlich nur beispielhaft. (wink)

Mergen der Configs

Nun beginnt der eigentliche Spaß. Man geht Paket für Paket durch, merged die alte Config mit der Default-Config aus den neuen Tarballs und speichert das Ergebnis in der neuen Config. Der Aufruf von kdiff3 kann von der Kommandozeile erfolgen, das sieht mit den nötigen Optionen dann beispielsweise so aus:

alex@tiffy ..descartes/fli4l-3.9.0-rev26629-testing % 
kdiff3 -m -o config/advanced_networking.txt ../fli4l-3.9.0-rev26488-testing/config/advanced_networking.txt config_rev26629/advanced_networking.txt

Der Parameter -m gibt an, dass man den Merge-Modus des Programms benutzen will (und nicht nur ein Diff machen) und nach -o folgt die Datei, in der das Ergebnis des Merge gespeichert wird. Danach folgen noch die beiden Dateien, die man zusammenführen will. Man kann auch kdiff3 direkt starten. Das Programm begrüßt einen mit dem Dialog zum Dateien öffnen. Hier gibt man bei A und B die alte Config und die Default-Config an. Dann hakt man »Zusammenführen« bzw. »Merge« und öffnet dort die neue Config.

Für's Nachvollziehen der Vorgehensweise bitte genau nochmal die Pfadangaben anschauen, damit es hier nicht zu Verwechslungen kommt. Im Feld »Ziel« darf keinesfalls die alte Config stehen!

In der Hauptansicht gibt es dann drei Fenster. Links oben (A) die alte Config, rechts oben (B) die Default-Config und unten quer das Ergebnis. kdiff3 springt gleich zum ersten Konflikt, im folgenden Screenshot ist das ein Kommentar im Header des base.txt:

Jetzt kann man durch Klicken auf "A" oder "B" den Teil des jeweiligen oberen Fensters in das untere übernehmen. Danach springt man mit dem Button mit den zwei blauen und dem einen roten Dreieck zum nächsten Konflikt. Eigene Änderungen kann man direkt auch im unteren Fenster machen. Ist man mit dem Ergebnis zufrieden, drückt man auf Speichern und wendet sich der nächsten Datei zu.

kdiff3 bietet noch etliche Optionen und Feinheiten in der Bedienungen, das würde aber weit über den Zweck dieses HowTos hinausgehen. (wink)