View | Details | Raw Unified | Return to bug 206866 | Differences between
and this patch

Collapse All | Expand All

(-)en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml (-158 / +328 lines)
Lines 247-254 Link Here
247
	Merges are either accepted, open an editor, or cause
247
	Merges are either accepted, open an editor, or cause
248
	<command>freebsd-update</command> to abort.  When in doubt,
248
	<command>freebsd-update</command> to abort.  When in doubt,
249
	backup <filename>/etc</filename> and just accept the merges.
249
	backup <filename>/etc</filename> and just accept the merges.
250
	See <xref linkend="mergemaster"/> for more information about
250
      </para>
251
	<command>mergemaster</command>.</para>
252
251
253
      <programlisting># Directory in which to store downloaded updates and temporary
252
      <programlisting># Directory in which to store downloaded updates and temporary
254
# files used by &os; Update.
253
# files used by &os; Update.
Lines 1279-1284 Link Here
1279
      </step>
1278
      </step>
1280
1279
1281
      <step>
1280
      <step>
1281
	<para>If you have not previously performed an 
1282
	  <buildtarget>installworld</buildtarget> using the
1283
	  &man.etcupdate.8; utility to perform the merging of the
1284
	  configuration files in <filename>/etc/</filename>, then it
1285
	  will need to be bootstrapped.  For details on how to perform
1286
	  the bootstrapping procedure, or how to determine whether it
1287
	  is required, see <xref linkend="etcupdate-bootstrap"/>.
1288
	</para>
1289
      </step>
1290
1291
      <step>
1282
	<para>Read <filename>/usr/src/UPDATING</filename> for any
1292
	<para>Read <filename>/usr/src/UPDATING</filename> for any
1283
	  extra steps necessary for that version of the source.  This
1293
	  extra steps necessary for that version of the source.  This
1284
	  file contains important information about potential problems
1294
	  file contains important information about potential problems
Lines 1370-1375 Link Here
1370
	  the function of each command.</para>
1380
	  the function of each command.</para>
1371
1381
1372
	<step>
1382
	<step>
1383
	  <para>If the &man.etcupdate.8; utility has not previously
1384
	    been used during an update to perform the merging of the
1385
	    configuration files in <filename>/etc/</filename>, then it
1386
	    will need to be bootstrapped using a copy of the &os;
1387
	    source tree which matches the <emphasis>currently</emphasis>
1388
	    installed system (pre-update):</para>
1389
1390
	  <screen>&prompt.root; <userinput>etcupdate extract -s <replaceable>/PATH/TO/PREVIOUS/SOURCE/TREE</replaceable></userinput></screen>
1391
	</step>
1392
1393
	<step>
1373
	  <para>If the build world process has previously been run on
1394
	  <para>If the build world process has previously been run on
1374
	    this system, a copy of the previous build may still exist
1395
	    this system, a copy of the previous build may still exist
1375
	    in <filename>/usr/obj</filename>.  To
1396
	    in <filename>/usr/obj</filename>.  To
Lines 1462-1484 Link Here
1462
1483
1463
	<step>
1484
	<step>
1464
	  <para>Remaking the world will not update certain
1485
	  <para>Remaking the world will not update certain
1465
	    directories, such as <filename>/etc</filename>,
1486
	    directories, such as <filename>/etc/</filename>,
1466
	    <filename>/var</filename> and <filename>/usr</filename>,
1487
	    <filename>/var/</filename> and <filename>/usr/</filename>,
1467
	    with new or changed configuration files.  The next step is
1488
	    with new or changed configuration files.  The next step is
1468
	    to perform some initial configuration file updates
1489
	    to perform some initial configuration file updates
1469
	    to <filename>/etc</filename> in
1490
	    to <filename>/etc/</filename> in preparation for the new
1470
	    preparation for the new world.  The following command
1491
	    world.  Use the <option>-n</option> option to first perform a
1471
	    compares only those files that are essential for the
1492
	    "dry-run", which will report what actions would be taken,
1472
	    success of <buildtarget>installworld</buildtarget>.  For
1493
	    but will not actually make any changes.  Refer to
1473
	    instance, this step may add new groups, system accounts,
1494
	    <xref linkend="etcupdate"/> for more details about this
1474
	    or startup scripts which have been added to &os; since the
1495
	    command:</para>
1475
	    last update.  This is necessary so that the
1476
	    <buildtarget>installworld</buildtarget> step will be able
1477
	    to use any new system accounts, groups, and scripts.
1478
	    Refer to <xref linkend="mergemaster"/> for more detailed
1479
	    instructions about this command:</para>
1480
1496
1481
	  <screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
1497
	  <screen>&prompt.root; <userinput>etcupdate -pn | less</userinput>
1498
&prompt.root; <userinput>etcupdate -p</userinput></screen>
1482
	</step>
1499
	</step>
1483
1500
1484
	<step>
1501
	<step>
Lines 1490-1498 Link Here
1490
	</step>
1507
	</step>
1491
1508
1492
	<step>
1509
	<step>
1493
	  <para>Update any remaining configuration files.</para>
1510
	  <para>Update any remaining configuration files.
1511
	    Use the <option>-n</option> option to first perform a
1512
	    "dry-run", which will report what actions would be taken,
1513
	    but will not actually make any changes.</para>
1494
1514
1495
	  <screen>&prompt.root; <userinput>mergemaster -iF</userinput></screen>
1515
	  <screen>&prompt.root; <userinput>etcupdate -n | less</userinput>
1516
&prompt.root; <userinput>etcupdate</userinput></screen>
1496
	</step>
1517
	</step>
1497
1518
1498
	<step>
1519
	<step>
Lines 1671-1843 Link Here
1671
      </note>
1692
      </note>
1672
    </sect2>
1693
    </sect2>
1673
1694
1674
    <sect2 xml:id="mergemaster">
1695
    <sect2 xml:id="etcupdate">
1675
      <info>
1696
      <info>
1676
      <title>Merging Configuration Files</title>
1697
	<title>Merging Configuration Files</title>
1677
1698
1678
	  <authorgroup>
1699
	<authorgroup>
1679
	    <author>
1700
	  <author>
1680
	      <personname>
1701
	    <personname>
1681
		<firstname>Tom</firstname>
1702
	      <firstname>Tom</firstname>
1682
		<surname>Rhodes</surname>
1703
	      <surname>Rhodes</surname>
1683
	      </personname>
1704
	    </personname>
1684
	      <contrib>Contributed by </contrib>
1705
	    <contrib>Originally written to describe the mergemaster(8) utility by </contrib>
1685
	    </author>
1706
	  </author>
1686
	  </authorgroup>
1707
	</authorgroup>
1687
	</info>
1688
1708
1689
	<indexterm>
1709
	<authorgroup>
1690
	  <primary>
1710
	  <author>
1691
	    <command>mergemaster</command>
1711
	    <personname>
1692
	  </primary>
1712
	      <firstname>Ben</firstname>
1693
	</indexterm>
1713
	      <surname>Woods</surname>
1714
	    </personname>
1715
	    <contrib>Modified to describe the etcupdate(8) utility by </contrib>
1716
	  </author>
1717
	  <!-- Feb 2016 -->
1718
	</authorgroup>
1719
      </info>
1694
1720
1695
      <para>&os; provides the &man.mergemaster.8; Bourne script to aid
1721
      <indexterm>
1722
	<primary>
1723
	  <command>etcupdate</command>
1724
	</primary>
1725
      </indexterm>
1726
1727
      <para>&os; provides the &man.etcupdate.8; Bourne script to aid
1696
	in determining the differences between the configuration files
1728
	in determining the differences between the configuration files
1697
	in <filename>/etc</filename>, and the configuration files in
1729
	in <filename>/etc/</filename>, and the configuration files in
1698
	<filename>/usr/src/etc</filename>.  This is the recommended
1730
	<filename>/usr/src/etc/</filename>.  This is the recommended
1699
	solution for keeping the system configuration files up to date
1731
	solution for keeping the system configuration files up to date
1700
	with those located in the source tree.</para>
1732
	with those located in the source tree, as it uses a 3-way
1733
	merge algorithm to compare the source tree used for the
1734
	previous installworld and current installworld, and
1735
	automatically merges any updates to the installed system
1736
	without clobbering local changes which have been made to the
1737
	system.</para>
1701
1738
1702
      <para>Before using <command>mergemaster</command>, it is
1739
      <sect3 xml:id="etcupdate-bootstrap">
1703
	recommended to first copy the existing
1740
	<title>Bootstrapping <command>etcupdate</command> (First time only)</title>
1704
	<filename>/etc</filename> somewhere safe.  Include
1705
	<option>-R</option> which does a recursive copy and
1706
	<option>-p</option> which preserves times and the ownerships
1707
	on files:</para>
1708
1741
1709
      <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen>
1742
	<para>If you have not previously performed an <buildtarget>installworld</buildtarget>
1743
	  using the &man.etcupdate.8; utility to perform the merging
1744
	  of the configuration files in <filename>/etc/</filename>,
1745
	  then it will need to be bootstrapped.  This step essentially
1746
	  involves providing <command>etcupdate</command> with a copy
1747
	  of the source tree that matches the
1748
	  <emphasis>currently</emphasis> installed world.</para>
1710
1749
1711
      <para>When run, <command>mergemaster</command> builds a
1750
	<important>
1712
	temporary root environment, from <filename>/</filename> down,
1751
	  <para>This is only required the first time that
1713
	and populates it with various system configuration files.
1752
	  <command>etcupdate</command> is used to perform an install
1714
	Those files are then compared to the ones currently installed
1753
	  world, as it saves a copy of the new world each time it is
1715
	in the system.  Files that differ will be shown in
1754
	  used.</para>
1716
	&man.diff.1; format, with the <option>+</option> sign
1755
	</important>
1717
	representing added or modified lines, and <option>-</option>
1718
	representing lines that will be either removed completely or
1719
	replaced with a new file.  Refer to &man.diff.1; for more
1720
	information about how file differences are shown.</para>
1721
1756
1722
      <para>Next, <command>mergemaster</command> will display each
1757
	<para>To check whether <command>etcupdate</command>
1723
	file that differs, and present options to: delete the new
1758
	  already has a copy of the correct source tree, or if it
1724
	file, referred to as the temporary file, install the temporary
1759
	  needs to be bootstrapped, confirm that the following command
1725
	file in its unmodified state, merge the temporary file with
1760
	  shows only the local changes which have been made to the
1726
	the currently installed file, or view the results
1761
	  system.  Files that differ from their originally installed
1727
	again.</para>
1762
	  state  will be shown in &man.diff.1; format, with the
1763
	  <option>+</option> sign representing added or modified
1764
	  lines, and <option>-</option> representing lines that will
1765
	  be either removed completely or replaced with a new file.</para>
1728
1766
1729
      <para>Choosing to delete the temporary file will tell
1767
	<screen>&prompt.root; <userinput>etcupdate diff | less</userinput></screen>
1730
	<command>mergemaster</command> to keep the current file
1731
	unchanged and to delete the new version.  This option is not
1732
	recommended.  To get help at any time, type
1733
	<keycap>?</keycap> at the <command>mergemaster</command>
1734
	prompt.  If the user chooses to skip a file, it will be
1735
	presented again after all other files have been dealt
1736
	with.</para>
1737
1768
1738
      <para>Choosing to install the unmodified temporary file will
1769
	  <para>If this command fails with an error about a missing
1739
	replace the current file with the new one.  For most
1770
	  reference tree, then <command>etcupdate</command> needs to
1740
	unmodified files, this is the best option.</para>
1771
	  be bootstrapped.  If the output shows more changes than
1772
	  expected, it is likely that <command>etcupdate</command>
1773
	  has either been bootstrapped from a source tree that doesn't
1774
	  match the running system or was not run after the last
1775
	  system update.  In either scenario, the solution is to
1776
	  repeat the bootstrap process.</para>
1741
1777
1742
      <para>Choosing to merge the file will present a text editor, and
1778
	<para>To bootstrap <command>etcupdate</command>, you must
1743
	the contents of both files.  The files can be merged by
1779
	  first obtain a copy of the source tree which matches your
1744
	reviewing both files side by side on the screen, and choosing
1780
	  <emphasis>currently</emphasis> installed world.  This is not
1745
	parts from both to create a finished product.  When the files
1781
	  referring to the updated source tree which is about to to
1746
	are compared side by side, <keycap>l</keycap> selects the left
1782
	  be installed to the system, but a copy of the source tree
1747
	contents and <keycap>r</keycap> selects contents from the
1783
	  which matches the <emphasis>currently</emphasis> running
1748
	right.  The final output will be a file consisting of both
1784
	  system (used during the previous install or update).
1749
	parts, which can then be installed.  This option is
1785
	  If you are running a <literal>RELEASE</literal> branch,
1750
	customarily used for files where settings have been modified
1786
	  this must be a copy of the source tree which includes all
1751
	by the user.</para>
1787
	  changes for security/errata updates which have been
1788
	  installed (this applies even if you have previously been
1789
	  performing binary updates using the &man.freebsd-update.8;
1790
	  utility).</para>
1752
1791
1753
      <para>Choosing to view the results again will redisplay the file
1792
	<para>If you already have a copy of the &os; source tree which
1754
	differences.</para>
1793
	  was checked-out using <application>subversion</application>,
1794
	  but it does not match the <emphasis>currently</emphasis>
1795
	  running system, it is possible to roll the tree back to the
1796
	  matching version:</para>
1755
1797
1756
      <para>After <command>mergemaster</command> is done with the
1798
	<screen>&prompt.user; <userinput>uname -v</userinput>
1757
	system files, it will prompt for other options.  It may prompt
1799
&os; <replaceable>YOURRELEASE</replaceable> #0 <replaceable>YOURREVISION</replaceable>: <replaceable>BUILDTIMESTAMP</replaceable>     <replaceable>BUILDUSER@BUILDHOST:/PATH/TO/KERNCONF</replaceable>
1758
	to rebuild the password file and will finish up with an option
1800
&prompt.user; <userinput>svn update -r <replaceable>YOURREVISION</replaceable></userinput></screen>
1759
	to remove left-over temporary files.</para>
1760
<!--
1761
Probably not needed as changes should be minimal and mergemaster does
1762
a good job of merging.
1763
	<tip>
1764
	  <title>Name the New Root Directory
1765
	    (<filename>/var/tmp/root</filename>)
1766
	    with a Time Stamp, so You Can Easily Compare Differences
1767
	    Between Versions</title>
1768
1801
1769
	  <para>Frequently rebuilding world entails frequently
1802
	<para>If you do not have a copy of the matching source tree
1770
	    updating <filename>/etc</filename>
1803
	  readily available, or have already updated it to a newer
1771
	    as well, which can be a bit of a chore.</para>
1804
	  version and do not want to roll it back, the easiest way to
1805
	  obtain a new copy of the matching tree is to download it
1806
	  using <application>subversion</application>.  Here,
1807
	  <replaceable>BRANCH</replaceable> will typically be one of
1808
	  <literal>head</literal>, <literal>stable/<replaceable>MAJORVERSION</replaceable></literal> or
1809
	  <literal>releng/<replaceable>MAJORVERSION</replaceable>.<replaceable>MINORVERSION</replaceable></literal>
1810
	  (as listed at <link xlink:href="&url.base;/releng/">www.freebsd.org/releng</link>):
1811
	</para>
1772
1812
1773
	  <para>To speed up this process, use the following
1813
	<screen>&prompt.user; <userinput>svn checkout -r <replaceable>YOURREVISION</replaceable> svn://svn.FreeBSD.org/base/<replaceable>BRANCH</replaceable>/ <replaceable>/PATH/TO/SAVE/SOURCE/TREE</replaceable></userinput></screen>
1774
	    procedure to keep a copy of the last set of changed files
1775
	    that were merged into <filename>/etc</filename>.</para>
1776
1814
1777
	  <procedure>
1815
	<para>Once you have the source tree matching the current
1778
	    <step>
1816
	  world, use it to bootstrap <command>etcupdate</command>:</para>
1779
	      <para>Make the world as normal.  When updating
1780
		<filename>/etc</filename> and the
1781
		other directories, give the target directory a name
1782
		based on the current date:</para>
1783
1817
1784
	      <screen>&prompt.root; <userinput>mkdir /var/tmp/root-20130214</userinput>
1818
	<screen>&prompt.root; <userinput>etcupdate extract -s <replaceable>/PATH/TO/SAVED/SOURCE/TREE</replaceable></userinput></screen>
1785
&prompt.root; <userinput>cd /usr/src/etc</userinput>
1819
      </sect3>
1786
&prompt.root; <userinput>make DESTDIR=/var/tmp/root-20130214 \
1787
    distrib-dirs distribution</userinput></screen>
1788
	    </step>
1789
1820
1790
	    <step>
1821
      <sect3 xml:id="etcupdate-merge">
1791
	      <para>Merge in the changes from this directory as
1822
	<title>Merging Configuration Files</title>
1792
		outlined above.  <emphasis>Do not</emphasis> remove
1793
		the <filename>/var/tmp/root-20130214</filename>
1794
		directory when you have finished.</para>
1795
	    </step>
1796
1823
1797
	    <step>
1824
	<warning>
1798
	      <para>After downloading the latest version of the
1825
	  <para><command>etcupdate</command> needs to be bootstrapped the
1799
		source and remaking it, follow step 1.  Create a new
1826
	    first time it is used to merge configuration files
1800
		directory, which reflects the new date.  This example
1827
	    during an update.  See <xref linkend="etcupdate-bootstrap"/>.</para>
1801
		uses
1828
	</warning>
1802
		<filename>/var/tmp/root-20130221</filename>.</para>
1803
	    </step>
1804
1829
1805
	    <step>
1830
	<para><command>etcupdate</command> should typically be run
1806
	      <para>Use &man.diff.1; to see the differences that have
1831
	  twice in the update process. The first time should be
1807
		been made in the intervening week by creating a
1832
	  immediately before <buildtarget>installworld</buildtarget>
1808
		recursive diff between the two directories:</para>
1833
	  with the <option>-p</option> option, which updates only
1834
	  those files that are essential for the success of
1835
	  <buildtarget>installworld</buildtarget>.
1836
	  For instance, this step may add new groups, system accounts,
1837
	  or startup scripts which have been added to &os; since the
1838
	  last update.  This is necessary so that the <buildtarget>installworld</buildtarget>
1839
	  step will be able to use any new system accounts, groups,
1840
	  and scripts.  The second time should be immediately after
1841
	  <buildtarget>installworld</buildtarget> and without the
1842
	  <option>-p</option> option, to update the remainder of the
1843
	  configuration files.</para>
1809
1844
1810
	      <screen>&prompt.root; <userinput>cd /var/tmp</userinput>
1845
	<para>Each time the <command>etcupdate</command> utility is
1811
&prompt.root; <userinput>diff -r root-20130214 root-20130221</userinput></screen>
1846
	  used, it is recommended to first perform a "dry-run" using
1847
	  the <option>-n</option> option.  This will report what
1848
	  actions would be taken, but will not actually make any
1849
	  changes.</para>
1812
1850
1813
	      <para>Typically, this will be a much smaller set of
1851
	<para>When <command>etcupdate</command> is run after
1814
		differences than those between
1852
	  <buildtarget>installworld</buildtarget> (with no further
1815
		<filename>/var/tmp/root-20130221/etc</filename> and
1853
	  arguments), it first moves it's backup of the old source
1816
		<filename>/etc</filename>.  Because the set of
1854
	  tree from <filename>/var/db/etcupdate/current/</filename> to
1817
		differences is smaller, it is easier to migrate those
1855
	  <filename>/var/db/etcupdate/previous/</filename>, and then
1818
		changes across into <filename>/etc</filename>.</para>
1856
	  takes a copy of the new source tree from
1819
	    </step>
1857
	  <filename>/usr/src/</filename> to
1858
	  <filename>/var/db/etcupdate/current/</filename>.
1859
	  Next, <command>etcupdate</command> compares the files in
1860
	  the "current" and "previous" trees, and performs a 3-way merge
1861
	  to the installed system.  New files will be added, removed
1862
	  files will be deleted, and modified files will be updated,
1863
	  only if it it will not cobber any local changes.  If the merge
1864
	  encounters conflicts, then a version of the offending file
1865
	  will be saved with conflict markers for future resolution, and
1866
	  <command>etcupdate</command> will generate a warning.</para>
1820
1867
1821
	    <step>
1868
	<para>For each file that is updated a line will be output with a
1822
	      <para>When finished, remove the older of the two
1869
	  leading character to indicate the action taken:</para>
1823
		<filename>/var/tmp/root-*</filename>
1824
		directories:</para>
1825
1870
1826
	      <screen>&prompt.root; <userinput>rm -rf /var/tmp/root-20130214</userinput></screen>
1871
	<informaltable>
1827
	    </step>
1872
	  <tgroup cols="2">
1873
	    <thead>
1874
	      <row>
1875
	        <entry>Leading character</entry>
1876
	        <entry>Action taken</entry>
1877
	      </row>
1878
	    </thead>
1879
	    <tbody>
1880
	      <row>
1881
	        <entry>A</entry>
1882
	        <entry>Added</entry>
1883
	      </row>
1884
	      <row>
1885
	        <entry>C</entry>
1886
	        <entry>Conflict</entry>
1887
	      </row>
1888
	      <row>
1889
	        <entry>D</entry>
1890
	        <entry>Deleted</entry>
1891
	      </row>
1892
	      <row>
1893
	        <entry>M</entry>
1894
	        <entry>Merged</entry>
1895
	      </row>
1896
	      <row>
1897
	        <entry>U</entry>
1898
	        <entry>Updated</entry>
1899
	      </row>
1900
	    </tbody>
1901
	  </tgroup>
1902
	</informaltable>
1828
1903
1829
	    <step>
1904
	<para>Note that for certain files, <command>etcupdate</command>
1830
	      <para>Repeat this process whenever merging
1905
	  will automatically perform post-install actions any time
1831
		in changes to <filename>/etc</filename>.</para>
1906
	  they are updated:</para>
1832
	    </step>
1833
	  </procedure>
1834
1907
1835
	  <para>Use &man.date.1; to automate the generation of the
1908
	<informaltable>
1836
	    directory names:</para>
1909
	  <tgroup cols="2">
1910
	    <thead>
1911
	      <row>
1912
	        <entry>Modified file</entry>
1913
	        <entry>Post-install action</entry>
1914
	      </row>
1915
	    </thead>
1916
	    <tbody>
1917
	      <row>
1918
	        <entry><filename>/etc/master.passwd</filename></entry>
1919
	        <entry>&man.pwd.mkdb.8; is invoked</entry>
1920
	      </row>
1921
	      <row>
1922
	        <entry><filename>/etc/login.conf</filename></entry>
1923
	        <entry>&man.cap.mkdb.1; is invoked to update <filename>/etc/login.conf.db</filename></entry>
1924
	      </row>
1925
	      <row>
1926
	        <entry><filename>/etc/mail/aliases</filename></entry>
1927
	        <entry>&man.newaliases.1; is invoked *</entry>
1928
	      </row>
1929
	      <row>
1930
	        <entry><filename>/etc/services</filename></entry>
1931
	        <entry>&man.services.mkdb.8; is invoked</entry>
1932
	      </row>
1933
	      <row>
1934
	        <entry><filename>/etc/localtime</filename></entry>
1935
	        <entry>&man.tzsetup.8; is invoked if <filename>/var/db/zoneinfo</filename> exists</entry>
1936
	      </row>
1937
	      <row>
1938
	        <entry><filename>/etc/motd</filename></entry>
1939
	        <entry><command>/etc/rc.d/motd</command> is invoked *</entry>
1940
	      </row>
1941
	    </tbody>
1942
	  </tgroup>
1943
	</informaltable>
1837
1944
1838
	  <screen>&prompt.root; <userinput>mkdir /var/tmp/root-`date "+%Y%m%d"`</userinput></screen>
1945
	<para>* These post-install actions only occur if
1839
	</tip>
1946
	  <command>etcupdate</command> is updating file directly to
1840
	-->
1947
	  <filename>/etc/</filename> (the default behaviour).  Refer to
1948
	  the &man.etcupdate.8; man page for behaviour if the
1949
	  <option>-D</option> option has been used to merge
1950
	  configuration files in a non-default destination directory
1951
	  (for example, when using boot environments).</para>
1952
1953
      </sect3>
1954
1955
      <sect3 xml:id="etcupdate-resolve">
1956
	<title>Resolving Conflicts After Merging Configuration Files</title>
1957
1958
	<para>If <command>etcupdate</command> has reported any
1959
	  conflicts when updating the configuration files, it must be
1960
	  run once more in "resolve" mode.</para>
1961
1962
	<screen>&prompt.root; <userinput>etcupdate resolve</userinput></screen>
1963
1964
	<para>In this mode, <command>etcupdate</command> iterates over
1965
	  any existing conflicts and prompts the user for actions to
1966
	  take on each conflicted file.  For each file, the following
1967
	  actions are available:</para>
1968
1969
	<informaltable>
1970
	  <tgroup cols="2">
1971
	    <thead>
1972
	      <row>
1973
	        <entry>Prompt</entry>
1974
	        <entry>Action Description</entry>
1975
	      </row>
1976
	    </thead>
1977
	    <tbody>
1978
	      <row>
1979
	        <entry>(p) postpone</entry>
1980
	        <entry>Ignore this conflict for now.  It will remain for subsequent calls of <command>etcupdate resolve</command>.</entry>
1981
	      </row>
1982
	      <row>
1983
	        <entry>(df) diff-full</entry>
1984
	        <entry>Show all changes made to the merged file as a unified &man.diff.1;.</entry>
1985
	      </row>
1986
	      <row>
1987
	        <entry>(e) edit</entry>
1988
	        <entry>Manually edit the merged file in an editor.</entry>
1989
	      </row>
1990
	      <row>
1991
	        <entry>(r) resolved</entry>
1992
	        <entry>Install the manually edited version of the file into the destination directory.  Used after the (e) edit option.</entry>
1993
	      </row>
1994
	      <row>
1995
	        <entry>(mf) mine-full</entry>
1996
	        <entry>Use the version of the file in the running system and ignore any changes made to the file in the new source tree.</entry>
1997
	      </row>
1998
	      <row>
1999
	        <entry>(tf) theirs-full</entry>
2000
	        <entry>Use the version of the file from the new source tree and discard any local changes made to the file.</entry>
2001
	      </row>
2002
	      <row>
2003
	        <entry>(h) help</entry>
2004
	        <entry>Display the list of commands.</entry>
2005
	      </row>
2006
	    </tbody>
2007
	  </tgroup>
2008
	</informaltable>
2009
	
2010
      </sect3>
1841
    </sect2>
2011
    </sect2>
1842
2012
1843
    <sect2 xml:id="make-delete-old">
2013
    <sect2 xml:id="make-delete-old">
Lines 1877-1883 Link Here
1877
	during the system upgrade process.</para>
2047
	during the system upgrade process.</para>
1878
2048
1879
      <para>After the <command>make installworld</command> and the
2049
      <para>After the <command>make installworld</command> and the
1880
	subsequent <command>mergemaster</command> have finished
2050
	subsequent <command>etcupdate</command> have finished
1881
	successfully, check for obsolete files and libraries:</para>
2051
	successfully, check for obsolete files and libraries:</para>
1882
2052
1883
      <screen>&prompt.root; <userinput>cd /usr/src</userinput>
2053
      <screen>&prompt.root; <userinput>cd /usr/src</userinput>
Lines 2216-2222 Link Here
2216
      <filename>/usr/obj</filename> via <acronym>NFS</acronym>.  Then,
2386
      <filename>/usr/obj</filename> via <acronym>NFS</acronym>.  Then,
2217
      run <command>shutdown now</command> to go to single-user mode in
2387
      run <command>shutdown now</command> to go to single-user mode in
2218
      order to install the new kernel and world and run
2388
      order to install the new kernel and world and run
2219
      <command>mergemaster</command> as usual.  When done, reboot to
2389
      <command>etcupdate</command> as usual.  When done, reboot to
2220
      return to normal multi-user operations.</para>
2390
      return to normal multi-user operations.</para>
2221
2391
2222
    <para>After verifying that everything on the test machine is
2392
    <para>After verifying that everything on the test machine is

Return to bug 206866