Whitespace only: Fix lots of whitespace issues in Handbook's 'cutting-edge' chapter
This commit is contained in:
parent
44ce836674
commit
9e7b67b769
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=33141
1 changed files with 548 additions and 528 deletions
|
@ -14,20 +14,24 @@
|
|||
</author>
|
||||
<!-- Mar 2000 -->
|
||||
</authorgroup>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jordan</firstname>
|
||||
<surname>Hubbard</surname>
|
||||
<contrib>Original work by </contrib>
|
||||
</author>
|
||||
|
||||
<author>
|
||||
<firstname>Poul-Henning</firstname>
|
||||
<surname>Kamp</surname>
|
||||
</author>
|
||||
|
||||
<author>
|
||||
<firstname>John</firstname>
|
||||
<surname>Polstra</surname>
|
||||
</author>
|
||||
|
||||
<author>
|
||||
<firstname>Nik</firstname>
|
||||
<surname>Clayton</surname>
|
||||
|
@ -52,28 +56,36 @@
|
|||
<para>After reading this chapter, you will know:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>The difference between the two development
|
||||
<listitem>
|
||||
<para>The difference between the two development
|
||||
branches: &os.stable; and &os.current;.</para>
|
||||
</listitem>
|
||||
<listitem><para>How to keep your system up to date with
|
||||
|
||||
<listitem>
|
||||
<para>How to keep your system up to date with
|
||||
<application>CVSup</application>,
|
||||
<application>CVS</application>, or
|
||||
<application>CTM</application>.</para>
|
||||
</listitem>
|
||||
<listitem><para>How to rebuild and reinstall the entire base
|
||||
|
||||
<listitem>
|
||||
<para>How to rebuild and reinstall the entire base
|
||||
system with <command>make buildworld</command> (etc).</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
<para>Before reading this chapter, you should:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>Properly set up your network connection (<xref
|
||||
<listitem>
|
||||
<para>Properly set up your network connection (<xref
|
||||
linkend="advanced-networking">).</para>
|
||||
</listitem>
|
||||
<listitem><para>Know how to install additional third-party
|
||||
software (<xref linkend="ports">).</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Know how to install additional third-party
|
||||
software (<xref linkend="ports">).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<note>
|
||||
|
@ -104,7 +116,7 @@
|
|||
&os.current; users are expected to have a high degree of
|
||||
technical skill, and should be capable of solving difficult
|
||||
system problems on their own. If you are new to &os;, think
|
||||
twice before installing it. </para>
|
||||
twice before installing it.</para>
|
||||
|
||||
<sect3>
|
||||
<title>What Is &os.current;?</title>
|
||||
|
@ -200,15 +212,15 @@
|
|||
</indexterm>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Join the &a.current.name; and the &a.svn-src-head.name; lists. This is not
|
||||
just a good idea, it is <emphasis>essential</emphasis>. If
|
||||
you are not on the <emphasis>&a.current.name;</emphasis> list,
|
||||
you will not see the comments that people are
|
||||
making about the current state of the system and thus will
|
||||
probably end up stumbling over a lot of problems that others
|
||||
have already found and solved. Even more importantly, you
|
||||
will miss out on important bulletins which may be critical
|
||||
to your system's continued health.</para>
|
||||
<para>Join the &a.current.name; and the &a.svn-src-head.name;
|
||||
lists. This is not just a good idea, it is
|
||||
<emphasis>essential</emphasis>. If you are not on the
|
||||
<emphasis>&a.current.name;</emphasis> list, you will not see
|
||||
the comments that people are making about the current state of
|
||||
the system and thus will probably end up stumbling over a lot
|
||||
of problems that others have already found and solved. Even
|
||||
more importantly, you will miss out on important bulletins
|
||||
which may be critical to your system's continued health.</para>
|
||||
|
||||
<para>The &a.svn-src-head.name; list will allow you to see the
|
||||
commit log entry for each change as it is made, along with
|
||||
|
@ -240,16 +252,19 @@
|
|||
|
||||
<listitem>
|
||||
<para>Use the <link linkend="cvsup">cvsup</link> program
|
||||
with the <filename>supfile</filename> named <filename>standard-supfile</filename>
|
||||
available from <filename>/usr/share/examples/cvsup</filename>.
|
||||
This is the most recommended
|
||||
method, since it allows you to grab the entire
|
||||
collection once and then only what has changed from then
|
||||
on. Many people run <command>cvsup</command> from
|
||||
<command>cron</command> and keep their
|
||||
sources up-to-date automatically. You have to
|
||||
customize the sample <filename>supfile</filename> above, and configure
|
||||
<link linkend="cvsup">cvsup</link> for your environment.</para>
|
||||
with the <filename>supfile</filename> named
|
||||
<filename>standard-supfile</filename>
|
||||
available from
|
||||
<filename>/usr/share/examples/cvsup</filename>.
|
||||
This is the most recommended method, since it allows you to
|
||||
grab the entire collection once and then only what has
|
||||
changed from then on. Many people run
|
||||
<command>cvsup</command> from <command>cron</command> and
|
||||
keep their sources up-to-date automatically. You have to
|
||||
customize the sample <filename>supfile</filename> above,
|
||||
and configure <link
|
||||
linkend="cvsup">cvsup</link> for your environment.</para>
|
||||
|
||||
<note>
|
||||
<para>The sample <filename>standard-supfile</filename> is
|
||||
intended for tracking a specific security branch of
|
||||
|
@ -276,14 +291,14 @@
|
|||
<para>Use the <application><link
|
||||
linkend="ctm">CTM</link></application> facility. If you
|
||||
have very bad connectivity (high price connections or
|
||||
only email access) <application>CTM</application> is an option.
|
||||
However, it is a lot of hassle and can give you broken files.
|
||||
This leads to it being rarely used, which again increases
|
||||
the chance of it not working for fairly long periods of
|
||||
time. We recommend using
|
||||
only email access) <application>CTM</application> is an
|
||||
option. However, it is a lot of hassle and can give you
|
||||
broken files. This leads to it being rarely used, which
|
||||
again increases the chance of it not working for fairly
|
||||
long periods of time. We recommend using
|
||||
<application><link linkend="cvsup">CVSup</link></application>
|
||||
for anybody with a 9600 bps modem or faster connection.
|
||||
</para>
|
||||
for anybody with a 9600 bps modem or faster
|
||||
connection.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</listitem>
|
||||
|
@ -303,11 +318,12 @@
|
|||
<para>Before compiling &os.current;, read the
|
||||
<filename>Makefile</filename> in <filename>/usr/src</filename>
|
||||
carefully. You should at least <link
|
||||
linkend="makeworld">install a new kernel and rebuild the world</link> the first time through
|
||||
linkend="makeworld">install a new kernel and rebuild the
|
||||
world</link> the first time through
|
||||
as part of the upgrading process. Reading the &a.current;
|
||||
and <filename>/usr/src/UPDATING</filename> will keep you up-to-date on other bootstrapping procedures
|
||||
that sometimes become necessary as we move toward the next
|
||||
release.</para>
|
||||
and <filename>/usr/src/UPDATING</filename> will keep you
|
||||
up-to-date on other bootstrapping procedures that sometimes
|
||||
become necessary as we move toward the next release.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -332,8 +348,8 @@
|
|||
are made. Changes go into this branch at a different pace, and
|
||||
with the general assumption that they have first gone into
|
||||
&os.current; for testing. This is <emphasis>still</emphasis>
|
||||
a development branch, however, and this means that at any given time,
|
||||
the sources for &os.stable; may or may not be suitable for any
|
||||
a development branch, however, and this means that at any given
|
||||
time, the sources for &os.stable; may or may not be suitable for any
|
||||
particular purpose. It is simply another engineering development
|
||||
track, not a resource for end-users.</para>
|
||||
</sect3>
|
||||
|
@ -357,8 +373,8 @@
|
|||
of the current security policy for old releases of
|
||||
FreeBSD, please see <ulink
|
||||
url="&url.base;/security/">http://www.FreeBSD.org/security/</ulink>.</para>
|
||||
</footnote>
|
||||
, and tracking an entire development branch just
|
||||
</footnote>,
|
||||
and tracking an entire development branch just
|
||||
for security reasons is likely to bring in a lot of unwanted
|
||||
changes as well.</para>
|
||||
|
||||
|
@ -389,21 +405,20 @@
|
|||
</indexterm>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Join the &a.stable.name; list. This will keep you informed of
|
||||
build-dependencies that may appear in &os.stable;
|
||||
or any other issues requiring
|
||||
special attention. Developers will also make announcements
|
||||
in this mailing list when they are contemplating some
|
||||
controversial fix or update, giving the users a chance to
|
||||
respond if they have any issues to raise concerning the
|
||||
proposed change.</para>
|
||||
<para>Join the &a.stable.name; list. This will keep you informed
|
||||
of build-dependencies that may appear in &os.stable;
|
||||
or any other issues requiring special attention. Developers
|
||||
will also make announcements in this mailing list when they are
|
||||
contemplating some controversial fix or update, giving the
|
||||
users a chance to respond if they have any issues to raise
|
||||
concerning the proposed change.</para>
|
||||
|
||||
<para>Join the relevant <application>SVN</application> list for
|
||||
the branch you are tracking. For example, if you are tracking
|
||||
the 7-STABLE branch, join the &a.svn-src-stable-7.name; list.
|
||||
This will allow you to view the
|
||||
commit log entry for each change as it is made, along with
|
||||
any pertinent information on possible side-effects.</para>
|
||||
This will allow you to view the commit log entry for each
|
||||
change as it is made, along with any pertinent information on
|
||||
possible side-effects.</para>
|
||||
|
||||
<para>To join these lists, or one of the others available
|
||||
go to &a.mailman.lists.link; and click on the list that
|
||||
|
@ -416,9 +431,9 @@
|
|||
<listitem>
|
||||
<para>If you are going to install a new system and want it
|
||||
to run monthly snapshot built from &os.stable;, please
|
||||
check the <ulink url="&url.base;/snapshots/">
|
||||
Snapshots</ulink> web page for more information.
|
||||
Alternatively, it is possible to
|
||||
check the <ulink
|
||||
url="&url.base;/snapshots/">Snapshots</ulink> web page for
|
||||
more information. Alternatively, it is possible to
|
||||
install the most recent &os.stable; release from the
|
||||
<link linkend="mirrors">mirror sites</link> and follow
|
||||
the instructions below to upgrade your system to the
|
||||
|
@ -442,15 +457,14 @@
|
|||
</indexterm>
|
||||
<listitem>
|
||||
<para>Use the <link linkend="cvsup">cvsup</link> program
|
||||
with the <filename>supfile</filename> named <filename>stable-supfile</filename>
|
||||
from the directory
|
||||
with the <filename>supfile</filename> named
|
||||
<filename>stable-supfile</filename> from the directory
|
||||
<filename>/usr/share/examples/cvsup</filename>.
|
||||
This is the most recommended
|
||||
method, since it allows you to grab the entire
|
||||
collection once and then only what has changed from then
|
||||
on. Many people run <command>cvsup</command> from
|
||||
<command>cron</command> to keep their
|
||||
sources up-to-date automatically. You have to
|
||||
This is the most recommended method, since it allows you to
|
||||
grab the entire collection once and then only what has
|
||||
changed from then on. Many people run
|
||||
<command>cvsup</command> from <command>cron</command> to
|
||||
keep their sources up-to-date automatically. You have to
|
||||
customize the sample <filename>supfile</filename> above,
|
||||
and configure <link linkend="cvsup">cvsup</link> for your
|
||||
environment.</para>
|
||||
|
@ -465,8 +479,7 @@
|
|||
linkend="ctm">CTM</link></application> facility. If
|
||||
you do not have a fast and inexpensive connection to
|
||||
the Internet, this is the method you should consider
|
||||
using.
|
||||
</para>
|
||||
using.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</listitem>
|
||||
|
@ -486,11 +499,12 @@
|
|||
<para>Before compiling &os.stable;, read the
|
||||
<filename>Makefile</filename> in <filename>/usr/src</filename>
|
||||
carefully. You should at least <link
|
||||
linkend="makeworld">install a new kernel and rebuild the world</link> the first time through
|
||||
as part of the upgrading process. Reading the &a.stable; and <filename>/usr/src/UPDATING</filename> will
|
||||
keep you up-to-date on other bootstrapping procedures that
|
||||
sometimes become necessary as we move toward the next
|
||||
release.</para>
|
||||
linkend="makeworld">install a new kernel and rebuild the
|
||||
world</link> the first time through
|
||||
as part of the upgrading process. Reading the &a.stable; and
|
||||
<filename>/usr/src/UPDATING</filename> will keep you up-to-date
|
||||
on other bootstrapping procedures that sometimes become
|
||||
necessary as we move toward the next release.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</sect3>
|
||||
|
@ -536,12 +550,11 @@
|
|||
of interest to you. Updates are generated on the fly by the server,
|
||||
according to what you have and what you want to have.
|
||||
<application>Anonymous CVS</application> is quite a bit more
|
||||
simplistic than <application>CVSup</application> in that it is just an extension to
|
||||
<application>CVS</application> which allows it to pull changes
|
||||
directly from a remote CVS repository.
|
||||
simplistic than <application>CVSup</application> in that it is just an
|
||||
extension to <application>CVS</application> which allows it to pull
|
||||
changes directly from a remote CVS repository.
|
||||
<application>CVSup</application> can do this far more efficiently,
|
||||
but <application>Anonymous CVS</application> is easier to
|
||||
use.</para>
|
||||
but <application>Anonymous CVS</application> is easier to use.</para>
|
||||
|
||||
<indexterm>
|
||||
<primary><application>CTM</application></primary>
|
||||
|
@ -567,8 +580,10 @@
|
|||
<application>CTM</application> will not do this, and if you wipe some
|
||||
portion of your source tree out (and do not have it backed up) then
|
||||
you will have to start from scratch (from the most recent CVS
|
||||
<quote>base delta</quote>) and rebuild it all with <application>CTM</application> or, with
|
||||
<application>Anonymous CVS</application>, simply delete the bad bits and resync.</para>
|
||||
<quote>base delta</quote>) and rebuild it all with
|
||||
<application>CTM</application> or, with
|
||||
<application>Anonymous CVS</application>, simply delete the bad bits
|
||||
and resync.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="makeworld">
|
||||
|
@ -579,8 +594,7 @@
|
|||
</indexterm>
|
||||
<para>Once you have synchronized your local source tree against a
|
||||
particular version of &os; (&os.stable;, &os.current;, and so on)
|
||||
you can then use the source
|
||||
tree to rebuild the system.</para>
|
||||
you can then use the source tree to rebuild the system.</para>
|
||||
|
||||
<warning>
|
||||
<title>Make a Backup</title>
|
||||
|
@ -593,9 +607,8 @@
|
|||
source tree render your system unbootable.</para>
|
||||
|
||||
<para>Make sure you have taken a backup. And have a fixit floppy or
|
||||
bootable CD at
|
||||
hand. You will probably never have to use it, but it is better to be
|
||||
safe than sorry!</para>
|
||||
bootable CD at hand. You will probably never have to use it, but it
|
||||
is better to be safe than sorry!</para>
|
||||
</warning>
|
||||
|
||||
<warning>
|
||||
|
@ -619,9 +632,8 @@
|
|||
solved.</para>
|
||||
|
||||
<para>If you try to track &os.stable; or &os.current; and do
|
||||
not read the &a.stable; or the
|
||||
&a.current; respectively, then you are
|
||||
asking for trouble.</para>
|
||||
not read the &a.stable; or the &a.current; respectively, then you
|
||||
are asking for trouble.</para>
|
||||
</warning>
|
||||
|
||||
<warning>
|
||||
|
@ -693,8 +705,8 @@
|
|||
|
||||
<important>
|
||||
<para>Reading <filename>UPDATING</filename> is not an acceptable
|
||||
substitute for subscribing to the correct mailing list, as described
|
||||
previously. The two requirements are complementary, not
|
||||
substitute for subscribing to the correct mailing list, as
|
||||
described previously. The two requirements are complementary, not
|
||||
exclusive.</para>
|
||||
</important>
|
||||
</sect2>
|
||||
|
@ -706,8 +718,7 @@
|
|||
</indexterm>
|
||||
|
||||
<para>Examine the files
|
||||
<filename>/usr/share/examples/etc/make.conf</filename>
|
||||
and
|
||||
<filename>/usr/share/examples/etc/make.conf</filename> and
|
||||
<filename>/etc/make.conf</filename>. The first contains some
|
||||
default defines – most of which are commented out. To
|
||||
make use of them when you rebuild your system from source, add
|
||||
|
@ -720,8 +731,7 @@
|
|||
<makevar>CFLAGS</makevar> and
|
||||
<makevar>NO_PROFILE</makevar> lines found in
|
||||
<filename>/usr/share/examples/etc/make.conf</filename>
|
||||
to
|
||||
<filename>/etc/make.conf</filename> and uncomment them.</para>
|
||||
to <filename>/etc/make.conf</filename> and uncomment them.</para>
|
||||
|
||||
<para>Examine the other definitions (<makevar>COPTFLAGS</makevar>,
|
||||
<makevar>NOPORTDOCS</makevar> and so
|
||||
|
@ -741,15 +751,14 @@
|
|||
<filename>/etc/group</filename>.</para>
|
||||
|
||||
<para>There have been occasions when the installation part of
|
||||
<command>make installworld</command> has expected certain usernames or groups
|
||||
to exist. When performing an upgrade it is likely that these
|
||||
users or groups did not exist. This caused problems when upgrading.
|
||||
In some cases <command>make buildworld</command> will check to see if
|
||||
these users or groups exist.</para>
|
||||
<command>make installworld</command> has expected certain usernames
|
||||
or groups to exist. When performing an upgrade it is likely that
|
||||
these users or groups did not exist. This caused problems when
|
||||
upgrading. In some cases <command>make buildworld</command> will
|
||||
check to see if these users or groups exist.</para>
|
||||
|
||||
<para>An example of this is when the
|
||||
<username>smmsp</username> user was added. Users had the
|
||||
installation process fail for them when
|
||||
<para>An example of this is when the <username>smmsp</username> user
|
||||
was added. Users had the installation process fail for them when
|
||||
&man.mtree.8; was trying to create
|
||||
<filename>/var/spool/clientmqueue</filename>.</para>
|
||||
|
||||
|
@ -806,8 +815,8 @@
|
|||
mode.</para>
|
||||
|
||||
<para>Alternatively, reboot the system, and at the boot prompt,
|
||||
select the <quote>single user</quote> option. The system will then boot
|
||||
single user. At the shell prompt you should then run:</para>
|
||||
select the <quote>single user</quote> option. The system will then
|
||||
boot single user. At the shell prompt you should then run:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>fsck -p</userinput>
|
||||
&prompt.root; <userinput>mount -u /</userinput>
|
||||
|
@ -818,20 +827,18 @@
|
|||
read/write, mounts all the other UFS file systems referenced in
|
||||
<filename>/etc/fstab</filename> and then turns swapping on.</para>
|
||||
|
||||
|
||||
<note>
|
||||
<para>If your CMOS clock is set to local time and not to GMT
|
||||
(this is true if the output of the &man.date.1; command
|
||||
does not show the correct time and zone),
|
||||
you may also need to run the following command:</para>
|
||||
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
|
||||
|
||||
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
|
||||
|
||||
<para>This will make sure that your local time-zone settings
|
||||
get set up correctly — without this, you may later run into some
|
||||
problems.
|
||||
</para>
|
||||
get set up correctly — without this, you may later run
|
||||
into some problems.</para>
|
||||
</note>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
|
@ -842,8 +849,8 @@
|
|||
<filename>/usr/obj</filename>. The directories shadow those under
|
||||
<filename>/usr/src</filename>.</para>
|
||||
|
||||
<para>You can speed up the <command>make buildworld</command> process, and
|
||||
possibly save yourself some dependency headaches by removing this
|
||||
<para>You can speed up the <command>make buildworld</command> process,
|
||||
and possibly save yourself some dependency headaches by removing this
|
||||
directory as well.</para>
|
||||
|
||||
<para>Some files below <filename>/usr/obj</filename> may have the
|
||||
|
@ -953,25 +960,26 @@ Script done, …</screen>
|
|||
|
||||
<para>As the names imply, <maketarget>buildworld</maketarget>
|
||||
builds a complete new tree under <filename>/usr/obj</filename>,
|
||||
and <maketarget>installworld</maketarget>, another target, installs this tree on
|
||||
the current machine.</para>
|
||||
and <maketarget>installworld</maketarget>, another target,
|
||||
installs this tree on the current machine.</para>
|
||||
|
||||
<para>Having separate options is very useful for two reasons. First, it allows you
|
||||
to do the build safe in the knowledge that no components of
|
||||
your running system will be affected. The build is
|
||||
<para>Having separate options is very useful for two reasons. First,
|
||||
it allows you to do the build safe in the knowledge that no
|
||||
components of your running system will be affected. The build is
|
||||
<quote>self hosted</quote>. Because of this, you can safely
|
||||
run <maketarget>buildworld</maketarget> on a machine running
|
||||
in multi-user mode with no fear of ill-effects. It is still
|
||||
recommended that you run the
|
||||
<maketarget>installworld</maketarget> part in single user
|
||||
mode, though.</para>
|
||||
recommended that you run the <maketarget>installworld</maketarget>
|
||||
part in single user mode, though.</para>
|
||||
|
||||
<para>Secondly, it allows you to use NFS mounts to upgrade
|
||||
multiple machines on your network. If you have three machines,
|
||||
<hostid>A</hostid>, <hostid>B</hostid> and <hostid>C</hostid> that you want to upgrade, run <command>make
|
||||
buildworld</command> and <command>make installworld</command> on
|
||||
<hostid>A</hostid>. <hostid>B</hostid> and <hostid>C</hostid> should then NFS mount <filename>/usr/src</filename>
|
||||
and <filename>/usr/obj</filename> from <hostid>A</hostid>, and you can then run
|
||||
<hostid>A</hostid>, <hostid>B</hostid> and <hostid>C</hostid> that
|
||||
you want to upgrade, run <command>make buildworld</command> and
|
||||
<command>make installworld</command> on <hostid>A</hostid>.
|
||||
<hostid>B</hostid> and <hostid>C</hostid> should then NFS mount
|
||||
<filename>/usr/src</filename> and <filename>/usr/obj</filename>
|
||||
from <hostid>A</hostid>, and you can then run
|
||||
<command>make installworld</command> to install the results of
|
||||
the build on <hostid>B</hostid> and <hostid>C</hostid>.</para>
|
||||
|
||||
|
@ -1042,8 +1050,10 @@ Script done, …</screen>
|
|||
linkend="make-buildworld">build world</link> before building a
|
||||
new kernel.</para>
|
||||
|
||||
<note><para>If you want to build a custom kernel, and already have a configuration
|
||||
file, just use <literal>KERNCONF=<replaceable>MYKERNEL</replaceable></literal>
|
||||
<note>
|
||||
<para>If you want to build a custom kernel, and already have a
|
||||
configuration file, just use
|
||||
<literal>KERNCONF=<replaceable>MYKERNEL</replaceable></literal>
|
||||
like this:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
||||
|
@ -1085,11 +1095,11 @@ Script done, …</screen>
|
|||
&prompt.root; <userinput>make installworld</userinput></screen>
|
||||
|
||||
<note>
|
||||
<para>If you specified variables on the <command>make
|
||||
buildworld</command> command line, you must specify the same
|
||||
variables in the <command>make installworld</command> command
|
||||
line. This does not necessarily hold true for other options;
|
||||
for example, <option>-j</option> must never be used with
|
||||
<para>If you specified variables on the
|
||||
<command>make buildworld</command> command line, you must specify
|
||||
the same variables in the <command>make installworld</command>
|
||||
command line. This does not necessarily hold true for other
|
||||
options; for example, <option>-j</option> must never be used with
|
||||
<maketarget>installworld</maketarget>.</para>
|
||||
|
||||
<para>For example, if you ran:</para>
|
||||
|
@ -1111,7 +1121,8 @@ Script done, …</screen>
|
|||
|
||||
<para>Remaking the world will not update certain directories (in
|
||||
particular, <filename>/etc</filename>, <filename>/var</filename> and
|
||||
<filename>/usr</filename>) with new or changed configuration files.</para>
|
||||
<filename>/usr</filename>) with new or changed configuration
|
||||
files.</para>
|
||||
|
||||
<para>The simplest way to update these files is to use
|
||||
&man.mergemaster.8;, though it is possible to do it manually
|
||||
|
@ -1133,58 +1144,64 @@ Script done, …</screen>
|
|||
<indexterm><primary><command>mergemaster</command></primary></indexterm>
|
||||
|
||||
<para>The &man.mergemaster.8; utility is a Bourne script that will
|
||||
aid you in determining the differences between your configuration files
|
||||
in <filename>/etc</filename>, and the configuration files in
|
||||
aid you in determining the differences between your configuration
|
||||
files in <filename>/etc</filename>, and the configuration files in
|
||||
the source tree <filename>/usr/src/etc</filename>. This is
|
||||
the recommended solution for keeping the system configuration files up to date
|
||||
with those located in the source tree.</para>
|
||||
the recommended solution for keeping the system configuration files
|
||||
up to date with those located in the source tree.</para>
|
||||
|
||||
<para>To begin simply type <command>mergemaster</command> at your prompt, and
|
||||
watch it start going. <command>mergemaster</command> will then build a
|
||||
temporary root environment, from <filename>/</filename> down, and populate
|
||||
it with various system configuration files. Those files are then compared
|
||||
to the ones currently installed in your system. At this point, files that
|
||||
differ will be shown in &man.diff.1; format, with the <option>+</option> sign
|
||||
representing added or modified lines, and <option>-</option> representing
|
||||
lines that will be either removed completely, or replaced with a new line.
|
||||
See the &man.diff.1; manual page for more information about the &man.diff.1;
|
||||
syntax and how file differences are shown.</para>
|
||||
<para>To begin simply type <command>mergemaster</command> at your
|
||||
prompt, and watch it start going. <command>mergemaster</command>
|
||||
will then build a temporary root environment, from
|
||||
<filename>/</filename> down, and populate it with various system
|
||||
configuration files. Those files are then compared to the ones
|
||||
currently installed in your system. At this point, files that
|
||||
differ will be shown in &man.diff.1; format, with the
|
||||
<option>+</option> sign representing added or modified lines, and
|
||||
<option>-</option> representing lines that will be either removed
|
||||
completely, or replaced with a new line. See the &man.diff.1;
|
||||
manual page for more information about the &man.diff.1; syntax and
|
||||
how file differences are shown.</para>
|
||||
|
||||
<para>&man.mergemaster.8; will then show you each file that displays variances,
|
||||
and at this point you will have the option of either deleting the new file (referred
|
||||
to as the temporary file), installing the temporary file in its unmodified state,
|
||||
merging the temporary file with the currently installed file, or viewing the
|
||||
<para>&man.mergemaster.8; will then show you each file that displays
|
||||
variances, and at this point you will have the option of either
|
||||
deleting the new file (referred to as the temporary file),
|
||||
installing the temporary file in its unmodified state, merging the
|
||||
temporary file with the currently installed file, or viewing the
|
||||
&man.diff.1; results again.</para>
|
||||
|
||||
<para>Choosing to delete the temporary file will tell &man.mergemaster.8; that we
|
||||
wish to keep our current file unchanged, and to delete the new version.
|
||||
This option is not recommended, unless you see no
|
||||
reason to change the current file. You can get help at any time by
|
||||
typing <keycap>?</keycap> at the &man.mergemaster.8; prompt. If the user
|
||||
chooses to skip a file, it will be presented again after all other files
|
||||
have been dealt with.</para>
|
||||
<para>Choosing to delete the temporary file will tell
|
||||
&man.mergemaster.8; that we wish to keep our current file
|
||||
unchanged, and to delete the new version. This option is not
|
||||
recommended, unless you see no reason to change the current file.
|
||||
You can get help at any time by typing <keycap>?</keycap> at the
|
||||
&man.mergemaster.8; prompt. If the user chooses to skip a file,
|
||||
it will be presented again after all other files have been dealt
|
||||
with.</para>
|
||||
|
||||
<para>Choosing to install the unmodified temporary file will replace the
|
||||
current file with the new one. For most unmodified files, this is the best
|
||||
option.</para>
|
||||
<para>Choosing to install the unmodified temporary file will replace
|
||||
the current file with the new one. For most unmodified files,
|
||||
this is the best option.</para>
|
||||
|
||||
<para>Choosing to merge the file will present you with a text editor,
|
||||
and the contents of both files. You can now merge them by
|
||||
reviewing both files side by side on the screen, and choosing parts from
|
||||
both to create a finished product. When the files are compared side by side,
|
||||
the <keycap>l</keycap> key will select the left contents and the
|
||||
<keycap>r</keycap> key will select contents from your right.
|
||||
The final output will be a file consisting of both parts, which can then be
|
||||
installed. This option is customarily used for files where settings have been
|
||||
modified by the user.</para>
|
||||
reviewing both files side by side on the screen, and choosing parts
|
||||
from both to create a finished product. When the files are
|
||||
compared side by side, the <keycap>l</keycap> key will select the
|
||||
left contents and the <keycap>r</keycap> key will select contents
|
||||
from your right. The final output will be a file consisting of
|
||||
both parts, which can then be installed. This option is
|
||||
customarily used for files where settings have been modified by
|
||||
the user.</para>
|
||||
|
||||
<para>Choosing to view the &man.diff.1; results again will show you the file differences
|
||||
just like &man.mergemaster.8; did before prompting you for an option.</para>
|
||||
<para>Choosing to view the &man.diff.1; results again will show you
|
||||
the file differences just like &man.mergemaster.8; did before
|
||||
prompting you for an option.</para>
|
||||
|
||||
<para>After &man.mergemaster.8; is done with the system files you will be
|
||||
prompted for other options. &man.mergemaster.8; may ask if you want to rebuild
|
||||
the password file and will finish up with an option to
|
||||
remove left-over temporary files.</para>
|
||||
<para>After &man.mergemaster.8; is done with the system files you
|
||||
will be prompted for other options. &man.mergemaster.8; may ask
|
||||
if you want to rebuild the password file and will finish up with
|
||||
an option to remove left-over temporary files.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
|
@ -1201,8 +1218,8 @@ Script done, …</screen>
|
|||
not in <filename>/usr/src/etc</filename>.</para>
|
||||
|
||||
<para>If you are using &man.mergemaster.8; (as recommended),
|
||||
you can skip forward to the <link linkend="cutting-edge-rebooting">next
|
||||
section</link>.</para>
|
||||
you can skip forward to the <link
|
||||
linkend="cutting-edge-rebooting">next section</link>.</para>
|
||||
|
||||
<para>The simplest way to do this by hand is to install the
|
||||
files into a new directory, and then work through them looking
|
||||
|
@ -1232,8 +1249,8 @@ Script done, …</screen>
|
|||
&prompt.root; <userinput>cd /usr/src/etc</userinput>
|
||||
&prompt.root; <userinput>make DESTDIR=/var/tmp/root distrib-dirs distribution</userinput></screen>
|
||||
|
||||
<para>This will build the necessary directory structure and install the
|
||||
files. A lot of the subdirectories that have been created under
|
||||
<para>This will build the necessary directory structure and install
|
||||
the files. A lot of the subdirectories that have been created under
|
||||
<filename>/var/tmp/root</filename> are empty and should be deleted.
|
||||
The simplest way to do this is to:</para>
|
||||
|
||||
|
@ -1244,29 +1261,29 @@ Script done, …</screen>
|
|||
redirected to <filename>/dev/null</filename> to prevent the warnings
|
||||
about the directories that are not empty.)</para>
|
||||
|
||||
<para><filename>/var/tmp/root</filename> now contains all the files that
|
||||
should be placed in appropriate locations below
|
||||
<para><filename>/var/tmp/root</filename> now contains all the files
|
||||
that should be placed in appropriate locations below
|
||||
<filename>/</filename>. You now have to go through each of these
|
||||
files, determining how they differ with your existing files.</para>
|
||||
|
||||
<para>Note that some of the files that will have been installed in
|
||||
<filename>/var/tmp/root</filename> have a leading <quote>.</quote>. At the
|
||||
time of writing the only files like this are shell startup files in
|
||||
<filename>/var/tmp/root/</filename> and
|
||||
<filename>/var/tmp/root/root/</filename>, although there may be others
|
||||
(depending on when you are reading this). Make sure you use
|
||||
<filename>/var/tmp/root</filename> have a leading <quote>.</quote>.
|
||||
At the time of writing the only files like this are shell startup
|
||||
files in <filename>/var/tmp/root/</filename> and
|
||||
<filename>/var/tmp/root/root/</filename>, although there may be
|
||||
others (depending on when you are reading this). Make sure you use
|
||||
<command>ls -a</command> to catch them.</para>
|
||||
|
||||
<para>The simplest way to do this is to use &man.diff.1; to compare the
|
||||
two files:</para>
|
||||
<para>The simplest way to do this is to use &man.diff.1; to compare
|
||||
the two files:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>diff /etc/shells /var/tmp/root/etc/shells</userinput></screen>
|
||||
|
||||
<para>This will show you the differences between your
|
||||
<filename>/etc/shells</filename> file and the new
|
||||
<filename>/var/tmp/root/etc/shells</filename> file. Use these to decide whether to
|
||||
merge in changes that you have made or whether to copy over your old
|
||||
file.</para>
|
||||
<filename>/var/tmp/root/etc/shells</filename> file. Use these to
|
||||
decide whether to merge in changes that you have made or whether to
|
||||
copy over your old file.</para>
|
||||
|
||||
<tip>
|
||||
<title>Name the New Root Directory
|
||||
|
@ -1274,19 +1291,20 @@ Script done, …</screen>
|
|||
Easily Compare Differences Between Versions</title>
|
||||
|
||||
<para>Frequently rebuilding the world means that you have to update
|
||||
<filename>/etc</filename> frequently as well, which can be a bit of
|
||||
a chore.</para>
|
||||
<filename>/etc</filename> frequently as well, which can be a bit
|
||||
of a chore.</para>
|
||||
|
||||
<para>You can speed this process up by keeping a copy of the last set
|
||||
of changed files that you merged into <filename>/etc</filename>.
|
||||
The following procedure gives one idea of how to do this.</para>
|
||||
<para>You can speed this process up by keeping a copy of the last
|
||||
set of changed files that you merged into
|
||||
<filename>/etc</filename>. The following procedure gives one
|
||||
idea of how to do this.</para>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Make the world as normal. When you want to update
|
||||
<filename>/etc</filename> and the other directories, give the
|
||||
target directory a name based on the current date. If you were
|
||||
doing this on the 14th of February 1998 you could do the
|
||||
target directory a name based on the current date. If you
|
||||
were doing this on the 14th of February 1998 you could do the
|
||||
following:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>mkdir /var/tmp/root-19980214</userinput>
|
||||
|
@ -1308,14 +1326,14 @@ Script done, …</screen>
|
|||
<para>When you have downloaded the latest version of the source
|
||||
and remade it, follow step 1. This will give you a new
|
||||
directory, which might be called
|
||||
<filename>/var/tmp/root-19980221</filename> (if you wait a week
|
||||
between doing updates).</para>
|
||||
<filename>/var/tmp/root-19980221</filename> (if you wait a
|
||||
week between doing updates).</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>You can now see the differences that have been made in the
|
||||
intervening week using &man.diff.1; to create a recursive diff
|
||||
between the two directories:</para>
|
||||
intervening week using &man.diff.1; to create a recursive
|
||||
diff between the two directories:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /var/tmp</userinput>
|
||||
&prompt.root; <userinput>diff -r root-19980214 root-19980221</userinput></screen>
|
||||
|
@ -1324,8 +1342,8 @@ Script done, …</screen>
|
|||
than those between
|
||||
<filename>/var/tmp/root-19980221/etc</filename> and
|
||||
<filename>/etc</filename>. Because the set of differences is
|
||||
smaller, it is easier to migrate those changes across into your
|
||||
<filename>/etc</filename> directory.</para>
|
||||
smaller, it is easier to migrate those changes across into
|
||||
your <filename>/etc</filename> directory.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
|
@ -1336,8 +1354,8 @@ Script done, …</screen>
|
|||
</step>
|
||||
|
||||
<step>
|
||||
<para>Repeat this process every time you need to merge in changes
|
||||
to <filename>/etc</filename>.</para>
|
||||
<para>Repeat this process every time you need to merge in
|
||||
changes to <filename>/etc</filename>.</para>
|
||||
</step>
|
||||
</procedure>
|
||||
|
||||
|
@ -1386,8 +1404,9 @@ Script done, …</screen>
|
|||
|
||||
<answer>
|
||||
<para>There is no easy answer to this one, as it depends on the
|
||||
nature of the change. For example, if you just ran <application>CVSup</application>, and
|
||||
it has shown the following files as being updated:</para>
|
||||
nature of the change. For example, if you just ran
|
||||
<application>CVSup</application>, and it has shown the
|
||||
following files as being updated:</para>
|
||||
|
||||
<screen><filename>src/games/cribbage/instr.c</filename>
|
||||
<filename>src/games/sail/pl_main.c</filename>
|
||||
|
@ -1424,7 +1443,6 @@ Script done, …</screen>
|
|||
<indexterm><primary>signal 11</primary></indexterm>
|
||||
|
||||
<answer>
|
||||
|
||||
<para>This is normally indicative of hardware problems.
|
||||
(Re)making the world is an effective way to stress test your
|
||||
hardware, and will frequently throw up memory problems. These
|
||||
|
@ -1451,20 +1469,20 @@ Script done, …</screen>
|
|||
|
||||
<para><filename>/usr/obj</filename> contains all the object files
|
||||
that were produced during the compilation phase. Normally, one
|
||||
of the first steps in the <command>make buildworld</command> process is to
|
||||
remove this directory and start afresh. In this case, keeping
|
||||
<filename>/usr/obj</filename> around after you have finished
|
||||
makes little sense, and will free up a large chunk of disk space
|
||||
(currently about 340 MB).</para>
|
||||
of the first steps in the <command>make buildworld</command>
|
||||
process is to remove this directory and start afresh. In this
|
||||
case, keeping <filename>/usr/obj</filename> around after you
|
||||
have finished makes little sense, and will free up a large
|
||||
chunk of disk space (currently about 340 MB).</para>
|
||||
|
||||
<para>However, if you know what you are doing you can have
|
||||
<command>make buildworld</command> skip this step. This will make subsequent
|
||||
builds run much faster, since most of sources will not need to
|
||||
be recompiled. The flip side of this is that subtle dependency
|
||||
problems can creep in, causing your build to fail in odd ways.
|
||||
This frequently generates noise on the &os; mailing lists,
|
||||
when one person complains that their build has failed, not
|
||||
realizing that it is because they have tried to cut
|
||||
<command>make buildworld</command> skip this step. This will
|
||||
make subsequent builds run much faster, since most of sources
|
||||
will not need to be recompiled. The flip side of this is that
|
||||
subtle dependency problems can creep in, causing your build to
|
||||
fail in odd ways. This frequently generates noise on the &os;
|
||||
mailing lists, when one person complains that their build has
|
||||
failed, not realizing that it is because they have tried to cut
|
||||
corners.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
@ -1479,8 +1497,8 @@ Script done, …</screen>
|
|||
you found a problem.</para>
|
||||
|
||||
<para><emphasis>In general</emphasis> (and this is not a hard and
|
||||
fast rule) the <command>make buildworld</command> process builds new
|
||||
copies of essential tools (such as &man.gcc.1;, and
|
||||
fast rule) the <command>make buildworld</command> process
|
||||
builds new copies of essential tools (such as &man.gcc.1;, and
|
||||
&man.make.1;) and the system libraries. These tools and
|
||||
libraries are then installed. The new tools and libraries are
|
||||
then used to rebuild themselves, and are installed again. The
|
||||
|
@ -1539,16 +1557,16 @@ Building everything..
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Turn off profiling (set <quote>NO_PROFILE=true</quote> in
|
||||
<filename>/etc/make.conf</filename>). You almost certainly
|
||||
do not need it.</para>
|
||||
<para>Turn off profiling (set <quote>NO_PROFILE=true</quote>
|
||||
in <filename>/etc/make.conf</filename>). You almost
|
||||
certainly do not need it.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Also in <filename>/etc/make.conf</filename>, set
|
||||
<makevar>CFLAGS</makevar> to something like <option>-O
|
||||
-pipe</option>. The optimization <option>-O2</option> is much
|
||||
slower, and the optimization difference between
|
||||
-pipe</option>. The optimization <option>-O2</option>
|
||||
is much slower, and the optimization difference between
|
||||
<option>-O</option> and <option>-O2</option> is normally
|
||||
negligible. <option>-pipe</option> lets the compiler use
|
||||
pipes rather than temporary files for communication, which
|
||||
|
@ -1556,17 +1574,19 @@ Building everything..
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Pass the <option>-j<replaceable>n</replaceable></option> option to &man.make.1; to
|
||||
run multiple processes in parallel. This usually helps
|
||||
regardless of whether you have a single or a multi processor
|
||||
machine.</para>
|
||||
<para>Pass the
|
||||
<option>-j<replaceable>n</replaceable></option> option to
|
||||
&man.make.1; to run multiple processes in parallel. This
|
||||
usually helps regardless of whether you have a single or
|
||||
a multi processor machine.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem><para>The file system holding
|
||||
<filename>/usr/src</filename> can be mounted (or remounted)
|
||||
with the <option>noatime</option> option. This prevents the
|
||||
file system from recording the file access time. You probably
|
||||
do not need this information anyway.</para>
|
||||
<listitem>
|
||||
<para>The file system holding <filename>/usr/src</filename>
|
||||
can be mounted (or remounted) with the
|
||||
<option>noatime</option> option. This prevents the
|
||||
file system from recording the file access time.
|
||||
You probably do not need this information anyway.</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen>
|
||||
|
||||
|
@ -1580,13 +1600,13 @@ Building everything..
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The file system holding <filename>/usr/obj</filename> can
|
||||
be mounted (or remounted) with the <option>async</option>
|
||||
option. This causes disk writes to happen asynchronously.
|
||||
In other words, the write completes immediately, and the
|
||||
data is written to the disk a few seconds later. This
|
||||
allows writes to be clustered together, and can be a
|
||||
dramatic performance boost.</para>
|
||||
<para>The file system holding <filename>/usr/obj</filename>
|
||||
can be mounted (or remounted) with the
|
||||
<option>async</option> option. This causes disk writes to
|
||||
happen asynchronously. In other words, the write completes
|
||||
immediately, and the data is written to the disk a few
|
||||
seconds later. This allows writes to be clustered
|
||||
together, and can be a dramatic performance boost.</para>
|
||||
|
||||
<warning>
|
||||
<para>Keep in mind that this option makes your file system
|
||||
|
@ -1655,6 +1675,7 @@ Building everything..
|
|||
</author>
|
||||
</authorgroup>
|
||||
</sect1info>
|
||||
|
||||
<title>Tracking for Multiple Machines</title>
|
||||
<indexterm>
|
||||
<primary>NFS</primary>
|
||||
|
@ -1765,4 +1786,3 @@ Building everything..
|
|||
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
||||
|
|
Loading…
Reference in a new issue