Merging von Files nach einem Upgrade

borsti007

Well-Known Member
Hallo,

ich habe gerade ein Upgrade installiert. BSD will nun haufenweise Dateien im VI mergen.

Da steht dann sowas wie:



<<<<<<< current version
# $FreeBSD: release/10.0.0/contrib/sendmail/cf/m4/cfhead.m4 223067 2011-06-14 04:20:18Z gshapiro $
=======
# $FreeBSD: releng/10.2/contrib/sendmail/cf/m4/cfhead.m4 285303 2015-07-09 05:23:17Z gshapiro $
>>>>>>> 10.2-RELEASE

Jetzt entferne ich im VI diese Zeilen mit "dd":

<<<<<<< current version
# $FreeBSD: release/10.0.0/contrib/sendmail/cf/m4/cfhead.m4 223067 2011-06-14 04:20:18Z gshapiro $
=======
>>>>>>> 10.2-RELEASE

Und lasse nur diese stehen:
# $FreeBSD: releng/10.2/contrib/sendmail/cf/m4/cfhead.m4 285303 2015-07-09 05:23:17Z gshapiro $


Anschließend speichere ich die Datei im VI mit ":w".

Unten erscheint dann sowas wie:
/var/db/freebsd-update/merge/new//etc/mail/sendmail.cf: 1886 lines, 59276 characters.

Und Enter.

Sollte das die Vorgehensweise sein?

Diese Änderungen werden aber nicht übernommen. In der Datei steht dann aber immer noch der alte Kram mit "release/10.0...".

Ich raffe es net :/

Eine Idee?
 
Welche Variante des Updates hast du denn benutzt? Solltest du freebsd-update benutzt haben, dann fehlt dir sicher noch der Aufruf von "freebsd-update install"
 
Das hier:
freebsd-update -r 10.2-RELEASE upgrade

Ich glaube aber, dass das eher ein Bedienungsfehler im VI ist. Ich weiss es nicht.

nach dem :w beende ich den VI mit :q.

Danach geht es dann muter so weiter:

The following file could not be merged automatically: /etc/master.passwd
Press Enter to edit this file in vi and resolve the conflicts
manually...

Wo die "neuen" Dateien liegen wird ja dann unten im VI angezeigt:
/var/db/freebsd-update/merge/new//etc/mail/sendmail.cf: 1886 lines, 59276 characters.



Hier "http://carme.cs.trinity.edu/thicks/tutorials/Editor-Vi/Vi.html" steht ganz unten was von ":r" mit merging files.

Hmmm, irgendwie habe ich einen Denkfehler....
 
Und was mache ich jetzt falsch?

Ich übersetze mal: to merge = verschmelzen

Ich bin jetzt bei der passwd.

Alten 10.0.0 Kram raus und 10.2-Zeugs bleibt drin.

Speichern mit ":w"

VI zeigt das:
/var/db/freebsd-update/merge/new//etc/master.passwd: 57 lines, 4071 characters.

Was macht er jetzt?

in der passwd unter /var/db/freebsd-update/merge/new/etc steht immer noch das:

<<<<<<< current version
# $FreeBSD: release/10.0.0/etc/master.passwd 256366 2013-10-12 06:08:18Z rpaulo $
=======
# $FreeBSD: releng/10.2/etc/master.passwd 256366 2013-10-12 06:08:18Z rpaulo $
>>>>>>> 10.2-RELEASE


Und in /etc/passwd steht weiterhin das:

root@zulu128:/etc # cat passwd
# $FreeBSD: release/10.0.0/etc/master.passwd 256366 2013-10-12 06:08:18Z paulo $

Nach dem Speichern im VI (:w) macht er scheinbar nix???
 
Also mit :w speicherst du schon. Mit :q verlässt du die Datei. vi lässt dich nach einer Änderung auch nicht raus, solange du nicht speicherst, oder :q! aufrufst.

Ich vermute du guckst einfach nur in die falschen Dateien. Weil du die master.passwd anpasst, aber schreibst, du guckst in die passwd (ohne master).

Und an deinem System passiert nichts, solange du nicht "freebsd-update install" aufrufst. Solange du das nicht tust, brauchst du auch nicht in /etc nachgucken.
 
Mir war das jetzt zu blöd.

In der master.passwd stand nach :w auch noch das 10.0.0 Geraffel. Ich hab den Merge-Scheiss jetzt abgebrochen und freebsd-fetch/install gemacht. Die Kiste bootet gerade.
 
Mit VI kenne ich mich nicht aus, deshalb habe ich das auch auf EE umgestellt, was aber grundsätzlich ja keinen Unterschied darstellen sollte.
Für mich ist dieses mergen auch der Punkt, der mir am meisten Kopfzerbrechen bereitet. Dabei muss ich aber auch gestehen, dass ich das nie gelernt habe und nur eine ungefähre Vorstellung davon habe.
Es liegen die Funktionen von merge(1) und mergemaster(8) zu Grunde und hier ist in den man-pages auch die Syntax beschrieben.

Wieso mergemaster nun manche Dinge angeblich nicht kann, dann aber doch genau das passende Ergebnis vorgibt, ist mir ebenso schleierhaft, wie ich in dem Prozess von freebsd-update manchmal verloren gehe. Nicht immer ist nämlich das, was einem angezeigt wird, etwas, das man aktiv ändern soll, sondern manchmal genügt es, die angedeuteten Änderungen durch Übernahme zu bestätigen, damit diese dann in der Folge automatisch gemerged werden. Man bestätigt dann quasi die Richtigkeit der automatisch gefundenen Syntax. Leider geht das manchmal schief, vermutlich, weil ich es eben nicht richtig kapiere oder nicht immer genau genug lese.
Außerdem ist es schon eine Weil her, dass ich zum letzten Mal freebsd-update benutzt habe, vielleicht erinnere ich mich auch falsch.

Wenn ich richtig liege, dann war das so, dass zunächst die angedachten Änderungen nur vorgestellt wurden. Allerallermeist passt dabei alles genau so, wie es vorgestellt wird und erfordert kein manuelles Eingreifen. Ein manuelles Eingreifen sollte eine Korrektur für merge (oder mergemaster) sein und diesem die passende Syntax mitgeben, nicht aber eine direkte Korrektur auf das endgültige Resultat. Wie gesagt, Korrekturen sind dabei eigentlich niemals nötig, da die Änderungen meist richtig erraten werden. In der Regel sind es nur die Kommentare mit den neuen FreeBSD-Versionen, die angepasst werden.
Manchmal ist es aber komplizierter und neue Eigenheiten erfordern neue Inhalte in manchen Konfigurationsdateien. Ich erinnere eine Änderung vor einiger Zeit, wo es neue Optionen gab und daher eine .conf weitergehenden Änderungen unterzogen werden musste. Es war also mehr Arbeit, als nur die Kommentare auf neue Versionen zu ändern. Dies hatte ich irgendwie verbockt. Solche Sachen verbocke ich eigentlich regelmäßig in freebsd-update und deshalb merke ich mir die und sehe sie mir später kontrolliert nochmal an und nehme dann nach dem freebsd-update die notwendigen Korrekturen vor. Es ist sehr wahrscheinlich, dass meine Fehler daher kommen, dass ich das Konzept von merge(1) nicht richtig umsetze.

Nun schließe ich von mir auf dich und unterstelle ähnliches Ungeschick.
Wenn du es nun besser machst als ich, die man-pages liest, richtig verstehst und dann auch entsprechend anwendest, wirst du vielleicht weniger Probleme haben. Doch wichtig ist der Ablauf von freebsd-update, in dem nicht ganz deutlich wird, dass die gewünschten Änderungen nicht die Änderung hin zur endgültigen Version einer Datei sein soll, sondern die Änderung für den Prozess des automatischen merge der dann gleich anschließend beginnen soll.
 
Ja, ich hatte da einiges nicht verstanden. Das Restore ist aber durch und gerade lief das Upgrade von 10.1 -> 10.2. wieder lief das merging. Dieses Mal hat es allerdings funktioniert. Was ich jetzt anders gemacht habe? Ich kann es nicht mehr nachvollziehen. Wahrscheinlich falle ich beim nächsten Upgrade wieder auf die Schnauze.
 
Zurück
Oben