mirror of https://git.FreeBSD.org/doc.git
handbook/cutting-edge: Recommend etcupdate(8)
Since etcupdate(8) has lived in base since 10.0 and seen plenty of use by both committers and contributors, it's time to recommend using it. Reviewed by: jhb (prior version) Differential Revision: https://reviews.freebsd.org/D27848
This commit is contained in:
parent
4d67595062
commit
7859bada69
|
|
@ -617,9 +617,10 @@ check /usr/src/UPDATING <.>
|
||||||
# make -j4 buildworld <.>
|
# make -j4 buildworld <.>
|
||||||
# make -j4 kernel <.>
|
# make -j4 kernel <.>
|
||||||
# shutdown -r now <.>
|
# shutdown -r now <.>
|
||||||
|
# etcupdate -p <.>
|
||||||
# cd /usr/src <.>
|
# cd /usr/src <.>
|
||||||
# make installworld <.>
|
# make installworld <.>
|
||||||
# mergemaster -Ui <.>
|
# etcupdate -B <.>
|
||||||
# shutdown -r now <.>
|
# shutdown -r now <.>
|
||||||
....
|
....
|
||||||
|
|
||||||
|
|
@ -635,6 +636,8 @@ check /usr/src/UPDATING <.>
|
||||||
|
|
||||||
<.> Reboot the system to the new kernel.
|
<.> Reboot the system to the new kernel.
|
||||||
|
|
||||||
|
<.> Update and merge configuraton files in [.filename]#/etc/# required before installworld.
|
||||||
|
|
||||||
<.> Go to the source directory.
|
<.> Go to the source directory.
|
||||||
|
|
||||||
<.> Install the world.
|
<.> Install the world.
|
||||||
|
|
@ -863,11 +866,54 @@ If a custom kernel was built, `KERNCONF` must also be set to use the new custom
|
||||||
A few final tasks complete the update.
|
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.
|
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 against the local versions.
|
||||||
|
It is also designed to minimize the amount of user intervention, in contrast 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,shell]
|
||||||
|
....
|
||||||
|
# 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,shell]
|
||||||
|
....
|
||||||
|
# etcupdate resolve
|
||||||
|
....
|
||||||
|
|
||||||
|
[WARNING]
|
||||||
|
====
|
||||||
|
When switching from man:mergemaster[8] to man:etcupdate[8], the first run might merge changes incorrectly generating spurious conflicts.
|
||||||
|
To prevent this, perform the following steps *before* updating sources and building the new world:
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
....
|
||||||
|
# etcupdate bootstrap <.>
|
||||||
|
# etcupdate diff <.>
|
||||||
|
....
|
||||||
|
|
||||||
|
<.> Bootstrap the database of stock [.filename]#/etc# files, for more information see man:etcupdate[8].
|
||||||
|
|
||||||
|
<.> Check the diff after bootstrapping. Trim any local changes that are no longer needed to reduce the chance of conflicts in future updates.
|
||||||
|
====
|
||||||
|
|
||||||
[[updating-src-completing-merge-mergemaster]]
|
[[updating-src-completing-merge-mergemaster]]
|
||||||
==== Merging Configuration Files with man:mergemaster[8]
|
==== 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:
|
With `-Ui`, man:mergemaster[8] automatically updates files that have not been user-modified and installs new files that are not already present:
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue