Page MenuHomeFreeBSD

D27848.id83750.diff
No OneTemporary

D27848.id83750.diff

diff --git a/documentation/content/en/books/handbook/cutting-edge/_index.adoc b/documentation/content/en/books/handbook/cutting-edge/_index.adoc
--- a/documentation/content/en/books/handbook/cutting-edge/_index.adoc
+++ b/documentation/content/en/books/handbook/cutting-edge/_index.adoc
@@ -602,9 +602,10 @@
# make -j4 buildworld <.>
# make -j4 kernel <.>
# shutdown -r now <.>
+# etcupdate -p <.>
# cd /usr/src <.>
# make installworld <.>
-# mergemaster -Ui <.>
+# etcupdate -B <.>
# shutdown -r now 1<.>
....
@@ -620,6 +621,8 @@
<.> Reboot the system to the new kernel.
+<.> Update and merge configuraton files in [.filename]#/etc/# required before installworld.
+
<.> Go to the source directory.
<.> Install the world.
@@ -829,11 +832,65 @@
A few final tasks complete the update. Any modified configuration files are merged with the new versions, outdated libraries are located and removed, then the system is restarted.
+[[updating-src-completing-merge-etcupdate]]
+==== Merging Configuration Files with man:etcupdate[8]
+
+man:etcupdate[8] is a tool for managing updates to files that are not updated as part of an installworld such as files located in [.filename]#/etc/#.
+It manages updates by doing a three-way merge of changes made to these files agianst the local versions.
+It it also designed to minimize the amount of user intervention, in constrast to man:mergemaster[8]'s interactive prompts.
+
+[NOTE]
+====
+In general, man:etcupdate[8] does not need any specific arguments for its job.
+There is however a handy in between command for sanity checking what will be done the first time man:etcupdate[8] is used:
+
+[source,bash]
+....
+# etcupdate diff
+....
+
+This command allows the user to audit configuration changes.
+====
+
+If man:etcupdate[8] is not able to merge a file automatically, the merge conflicts can be resolved with manual interaction by issuing:
+
+[source,bash]
+....
+# etcupdate resolve
+....
+
+[WARNING]
+====
+When switching from man:mergemaster[8] to man:etcupdate[8], the first run might print some bogus conflicts due to already applied changes.
+In general, the following command sequence should recover from this behavior:
+
+[.procedure]
+====
+* Bootstrapping man:etcupdate[8]
++
+
+[source,bash]
+....
+# etcupdate diff <.>
+# etcupdate bootstrap <.>
+# etcupdate diff 1<.>
+....
+
+<.> Check the output before updating sources and building the newworld.
+If the output shows a lot of diffs that are not expected, continue with the bootstrap command.
+
+<.> Bootstrap the program, for more information see man:etcupdate[8].
+
+<.> Check the diff again after bootstrapping. The unexpected diffs should be gone.
+====
+
+====
+
[[updating-src-completing-merge-mergemaster]]
==== Merging Configuration Files with man:mergemaster[8]
-man:mergemaster[8] provides an easy way to merge changes that have been made to system configuration files with new versions of those files.
-
+man:mergemaster[8] provides a way to merge changes that have been made to system configuration files with new versions of those files.
+man:mergemaster[8] is an alternative to the preferred man:etcupdate[8]
With `-Ui`, man:mergemaster[8] automatically updates files that have not been user-modified and installs new files that are not already present:
[source,bash]

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 13, 8:21 AM (20 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26918565
Default Alt Text
D27848.id83750.diff (3 KB)

Event Timeline