aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books/handbook/cutting-edge
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2006-05-07 17:57:32 +0000
committerXin LI <delphij@FreeBSD.org>2006-05-07 17:57:32 +0000
commitd66ba51686af7bfa9e1792fbd4711af0a66ff3ac (patch)
treeff3e380facaa5e05108c03e749e36fef68b3c1bb /zh_CN.GB2312/books/handbook/cutting-edge
parent203607eebcaa9c71b76aef58bb76fad177028399 (diff)
Notes
Diffstat (limited to 'zh_CN.GB2312/books/handbook/cutting-edge')
-rw-r--r--zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml153
1 files changed, 77 insertions, 76 deletions
diff --git a/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml b/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml
index b9a1e6f6b9..4f6ebf63b4 100644
--- a/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml
@@ -89,16 +89,16 @@
<indexterm><primary>STABLE</primary></indexterm>
<para>FreeBSD有两个开发分支:&os.current; 和 &os.stable;。
- 这部分将对每个做些说明,并且讲述您的系统如何与各自的树一同保持最新。
- 先讨论 &os.current;,然后是 &os.stable;。</para>
+ 这部分将对它们都做些说明, 并介绍您的系统如何与各自的树一同保持最新。
+ 我们将首先讨论 &os.current;, 随后讨论 &os.stable;。</para>
<sect2 id="current">
<title>使用最新的 &os; CURRENT</title>
- <para>我们再次强调, &os.current; 是 &os;
- 开发的<quote>最前沿</quote>。&os.current;
- 用户要有较高的技术能力,并且应该有能力自已解决困难的系统问题。
- 如果您是个 &os; 新手,那么在安装之前最好三思。</para>
+ <para>这里再次强调, &os.current; 是 &os;
+ 开发的 <quote>最前沿</quote>。 &os.current;
+ 用户要有较高的技术能力, 并且应该有能力自已解决困难的系统问题。
+ 如果您是个 &os; 新手, 那么在安装之前最好三思。</para>
<sect3>
<title>&os.current; 是什么?</title>
@@ -106,10 +106,11 @@
<para>&os.current; 是 &os; 的发展前沿。
包括了在下一个官方发行的软件中可能存在,
- 也可能不存在的发展、实验性变化、传统机制。由于许多
- &os; 开发者每天编译 &os.current; 源代码,有时这些代码会是不能编译的。
- 虽然这些问题会很快解决,但不管是 &os.current; 引起的破坏还是急切的泛涵性
- (greatly desired functionality) 都将是在您获取源代码的的时候值得注意的!</para>
+ 也可能不存在的发展、 试验性改动、 以及过渡性的机制。 尽管许多
+ &os; 开发者每天都会编译 &os.current; 源代码,
+ 但有时这些代码仍然会是不能编译的。 虽然这些问题会很快解决,
+ 但 &os.current; 是带来破坏还是您正希望的功能性改善,
+ 很可能完全取决于您获取源代码的的时机!</para>
</sect3>
<sect3>
@@ -126,7 +127,7 @@
<listitem>
<para>&os; 社区的成员: 为促使 &os.current;
- 保持尽可能的健全而愿花时间去解决问题的积极的测试员;
+ 保持尽可能的健全而愿花时间去解决问题的积极的测试者;
以及那些愿意提出关于 &os;
变化和总体方向的建设性建议并且提供补丁实现它们的人们。</para>
</listitem>
@@ -196,7 +197,7 @@
<listitem>
<para>从&os; <link
- linkend="mirrors">镜像站点</link>获取源码。您有两种方式选择:</para>
+ linkend="mirrors">镜像站点</link> 获取源码。 您有两种方式选择:</para>
<orderedlist>
<indexterm>
@@ -671,11 +672,11 @@
<title>改为单用户模式</title>
<indexterm><primary>单用户 模式</primary></indexterm>
- <para>您可能相在单用户模式下编译系统。
- 除了对更快处理事情显然有好处外,重装系统将接触许多重要的系统文件,
+ <para>您可能想在单用户模式下编译系统。
+ 除了对更快处理事情显然有好处外, 重装系统将触及许多重要的系统文件,
包括所有标准系统二进制文件、库文件、包含 (include)
- 文件等等。在运行的系统里(尤其是同时系统里有激活的用户)
- 更改这些文件是自寻烦恼。</para>
+ 文件等等。 在正运行的系统 (尤其是在有活跃的用户的时候)
+ 中更改这些文件是自寻烦恼。</para>
<indexterm><primary>多用户模式</primary></indexterm>
<para>另一种模式是在多用户模式下编译系统,然后转换到单用户模式下安装。
@@ -698,9 +699,9 @@
&prompt.root; <userinput>mount -a -t ufs</userinput>
&prompt.root; <userinput>swapon -a</userinput></screen>
- <para>这会检查文件系统,重新装载 <filename>/</filename>
- 为读/写,参考 <filename>/etc/fstab</filename>
- 装载其它所有的 UFS 文件系统,然后打开交换 (swapping) 开关。</para>
+ <para>这会检查文件系统,重新将 <filename>/</filename>
+ 以读/写模式挂接, 参考 <filename>/etc/fstab</filename>
+ 挂接其它所有的 UFS 文件系统,然后启用交换区。</para>
<note>
@@ -836,19 +837,19 @@ Script done, &hellip;</screen>
但是依然推荐您在单用户模式时运行
<maketarget>installworld</maketarget>。</para>
- <para>第二,允许您使用 NFS 装载 (NFS mounts)
+ <para>第二,允许您使用 NFS 挂接 (NFS mounts)
升级您网络里的多台计算机。如果您有三台
<hostid>A</hostid>、<hostid>B</hostid> 和 <hostid>C</hostid>
想进行升级,在<hostid>A</hostid> 执行
<command>make buildworld</command> 和
- <command>make installworld</command>。然后从
- <hostid>A</hostid> NFS 装载 (NFS mount)
- <hostid>B</hostid> 和 <hostid>C</hostid> 的
+ <command>make installworld</command>。 然后将
+ <hostid>A</hostid> 上的
<filename>/usr/src</filename> 和
- <filename>/usr/obj</filename>,接着您就执行
- <command>make installworld</command> 在
- <hostid>B</hostid> 和 <hostid>C</hostid>
- 上安装建立 (build) 的结果。</para>
+ <filename>/usr/obj</filename> 通过 NFS 挂接到
+ <hostid>B</hostid> 和 <hostid>C</hostid> 上, 接下来, 只需在
+ <hostid>B</hostid> 和 <hostid>C</hostid> 上使用
+ <command>make installworld</command>
+ 来安装构建的结果就可以了。</para>
<para>尽管 <maketarget>world</maketarget> target
仍然存在,强烈建议您不要用它。</para>
@@ -1263,9 +1264,9 @@ Script done, &hellip;</screen>
</note>
<para>为了完成,您可能想额外地更新 <filename>/stand</filename>
- 里的文件。这些文件由链接到 <filename>/stand/sysinstall</filename>
- 的二进制文件硬链接组成。这个文件要静态链接,以便没有其它文件系统时
- (尤其是 <filename>/usr</filename>) 被装载时也能工作。</para>
+ 里的文件。 这些文件由连接到 <filename>/stand/sysinstall</filename>
+ 的二进制文件硬连接组成。 这个文件要静态连接, 以在没有挂接其它文件系统时
+ (特别是 <filename>/usr</filename>) 时也能工作。</para>
<screen>&prompt.root; <userinput>cd /usr/src/release/sysinstall</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
@@ -1316,8 +1317,8 @@ Script done, &hellip;</screen>
<para>这就不必重建整个系统。您只需到相关的子目录里执行
<command>make all install</command>,仅此而已。
但是,如果有重大变化,如 <filename>src/lib/libc/stdlib</filename>,
- 那么您就要重建系统或至少静态链接的那些部分
- (除了您增加的部分都是静态链接的)。</para>
+ 那么您就要重建系统或至少静态连接的那些部分
+ (除了您增加的部分都是静态连接的)。</para>
<para>在这天后,就是您的事了。要是说每两个星期重建一下系统的话,
您可能会高兴。或者您可能只想重做改变过的部分,
@@ -1458,30 +1459,30 @@ Building everything..
</listitem>
<listitem><para>存放 <filename>/usr/src</filename> 的文件系统可以使用
- <option>noatime</option> 选项被装载(或再装载)。
- 这样会防止文件系统记录文件的存取时间。您可能并不需要这些信息。</para>
+ <option>noatime</option> 选项来挂接 (或重新挂接)。
+ 这样会防止文件系统记录文件的存取时间。 您可能并不需要这些信息。</para>
<screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen>
<warning>
<para>这个例子里假定 <filename>/usr/src</filename>
是在它自已的文件系统里。如果不是 (例如假设它是
- <filename>/usr</filename> 的部分),那么您就需要那个文件系统装载点,
+ <filename>/usr</filename> 的部分),那么您就需要那个文件系统挂接点,
而不是 <filename>/usr/src</filename>。</para>
</warning>
</listitem>
<listitem>
<para>存放 <filename>/usr/obj</filename> 的文件系统可以使用
- <option>async</option> 选项被装载(或被再装载)。
- 这会引起异步写盘。换句话说,写是立即完成了,
- 而数据要延迟几秒才会写到盘里。这就允许写到一堆,
- 如此产生戏剧性的性能提高。</para>
+ <option>async</option> 选项被挂接 (或重新挂接)。
+ 这样做将启用异步写盘。 换句话说, 对应用程序而言写会立即完成,
+ 而数据则延迟几秒才会写到盘里。 这样做能够成批地写下数据,
+ 从而极大地改善性能。</para>
<warning>
- <para>记住,这个选项会使您的文件系统更加脆弱。
- 使用这个选项增大了这样一个机率:要是电源断了,
- 在机器重启后,文件系统将处在不可恢复状态。</para>
+ <para>注意, 这个选项会使您的文件系统变得脆弱。
+ 使用这个选项会提高在电源断掉或机器非正常重启时,
+ 文件系统进入不可恢复状态的概率。</para>
<para>如果在这个文件系统里 <filename>/usr/obj</filename>
是很关键的,这不是问题。如果您有其它有价值的数据在同一个文件系统,
@@ -1492,7 +1493,7 @@ Building everything..
<warning>
<para>同上,如果 <filename>/usr/obj</filename>
- 不在自已的文件系统里,使用相关装载点的名字把它从例子里边替换掉。</para>
+ 不在自已的文件系统里,使用相关挂接点的名字把它从例子里边替换掉。</para>
</warning>
</listitem>
</itemizedlist>
@@ -1545,72 +1546,72 @@ Building everything..
那么让它们都下载源码并重建所有东西,看起有点浪费资源:
磁盘空间、网络带宽以及 CPU 周期。
解决的办法是让一台机器处理大部分的工作,而其它的机器通过
- NFS 装载 (mount) 这些工作。这部分列举了一种这样做的方法。</para>
+ NFS 挂接 (mount) 这些工作。这部分列举了一种这样做的方法。</para>
<sect2 id="small-lan-preliminaries">
<title>准备</title>
<para>首先,确定一批机器,运行的二进制代码是同一套---我们称作
- <emphasis>建造套件(build set)</emphasis>。每台机器可以有定制内核,
- 但他们运行的是相同的用户区二进制文件(userland binaries)。
- 从这批机器中选择一台机器做为 <emphasis>建造机器(build machine)</emphasis>。
- 这将是用于建造(build)系统和内核的机器。想像一下,它应该是一台快速的机器,
+ <emphasis>构建集群 (build set)</emphasis>。 每台机器可以使用不同的定制内核,
+ 但它们运行的是相同的用户区二进制文件(userland binaries)。
+ 从这批机器中选择一台机器做为 <emphasis>构建机器(build machine)</emphasis>。
+ 这将是用于构建(build)系统和内核的机器。想像一下,它应该是一台快速的机器,
有足够的空余的 CPU 来执行<command>make buildworld</command>。
您也想要选一台机器做为 <emphasis>测试机器(test machine)</emphasis>,
这个将用于软件的更新生成产品之前对他们进行测试。这个
<emphasis>必须</emphasis> 是一台您能提供的平时也可使用的机器。
- 它可以是<quote>建造机器</quote>,但没这个必要。</para>
+ 它可以是<quote>构建机器</quote>,但没这个必要。</para>
- <para>在这个<quote>建造套件</quote>里的所有机器需要从同一台机器、
- 同一个点上装载 <filename>/usr/obj</filename> 和
+ <para>在这个<quote>构建集群</quote>里的所有机器需要从同一台机器、
+ 同一个点上挂接 <filename>/usr/obj</filename> 和
<filename>/usr/src</filename>。理想地,
- 它们在<quote>建造机器</quote>上的两个不同的驱动器里,
- 但是在那台机器上可以进行 NFS 装载。如果您有多个<quote>建造套件</quote>,
- <filename>/usr/src</filename> 应该在某个<quote>建造机器</quote>上,
- 而在其它机器上进行 NFS 装载。</para>
-
- <para>最后,确认<quote>建造套件</quote>里所有机器上的
- <filename>/etc/make.conf</filename> 与<quote>建造机器</quote>里的相同。
- 这意味着<quote>建造机器</quote>必须建造部分基本系统用于
- <quote>建造套件</quote>里所有机器的安装。同样,
- 每台<quote>建造机器</quote>要有它自已的内核名字,使用
+ 它们在<quote>构建机器</quote>上的两个不同的驱动器里,
+ 但是在那台机器上可以进行 NFS 挂接。如果您有多个<quote>构建集群</quote>,
+ <filename>/usr/src</filename> 应该在某个<quote>构建机器</quote>上,
+ 而在其它机器上进行 NFS 挂接。</para>
+
+ <para>最后,确认<quote>构建集群</quote>里所有机器上的
+ <filename>/etc/make.conf</filename> 与<quote>构建机器</quote>里的相同。
+ 这意味着<quote>构建机器</quote>必须构建部分基本系统用于
+ <quote>构建集群</quote>里所有机器的安装。同样,
+ 每台<quote>构建机器</quote>要有它自已的内核名字,使用
<filename>/etc/make.conf</filename> 里的 <makevar>KERNCONF</makevar>
- 进行设置,并且每台<quote>建造机器</quote>应该把它们列在
+ 进行设置,并且每台<quote>构建机器</quote>应该把它们列在
<makevar>KERNCONF</makevar> 里,同时把自已的内核列在最前。
- <quote>建造机器</quote>的
+ <quote>构建机器</quote>的
<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>
- 里一定要有每台机器的内核配置文件,如果它想建造它们的内核的话。</para>
+ 里一定要有每台机器的内核配置文件,如果它想构建它们的内核的话。</para>
</sect2>
<sect2>
<title>基本系统</title>
- <para>既然所有的妥当了,就准备建造所有的东西。如<xref
- linkend="make-buildworld">中描述的一样在<quote>建造机器</quote>上建造内核和系统,
- 但是什么也不安装。在建造结束后,转到<quote>测试机器</quote>上,
- 安装您刚建造的内核。如果这台机器通过 NFS 装载了
+ <para>既然所有的妥当了,就准备构建所有的东西。如<xref
+ linkend="make-buildworld">中描述的一样在<quote>构建机器</quote>上构建内核和系统,
+ 但是什么也不安装。在构建结束后,转到<quote>测试机器</quote>上,
+ 安装您刚构建的内核。如果这台机器通过 NFS 挂接了
<filename>/usr/src</filename> 和 <filename>/usr/obj</filename>,
- 在您重启到单用户模式里,您需要启动网络然后装载他们。
+ 在您重启到单用户模式里,您需要启动网络然后挂接他们。
最简单的方式是启动到多用户模式下,然后执行 <command>shutdown now</command>
转到单用户模式。一旦进入,您就可以安装新的内核和系统,并执行
<command>mergemaster</command>,就像平常一样。完成后,
重启返回到一般多用户模式操作这台机器。</para>
- <para>在您确信所有在<quote>测试机器</quote>里都工作正常后,
- 就使用相同的过程在<quote>建造套件</quote>里的其它机器里安装新的软件。</para>
+ <para>在您确信所有在 <quote>测试机</quote>里都工作正常后,
+ 就使用相同的过程在 <quote>构建集群</quote>里的其它机器里安装新的软件。</para>
</sect2>
<sect2>
<title>Ports</title>
<para>类似的想法是使用 ports 树。
- 第一个关键的步骤是从同一台机子里装载
- <filename>/usr/ports</filename> 到<quote>建造套件</quote>里的所有机子。
+ 第一个关键的步骤是从同一台计算机上挂接
+ <filename>/usr/ports</filename> 到 <quote>构建集群</quote> 里的全部计算机。
然后正确设置 <filename>/etc/make.conf</filename> 共享
distfiles。您应把 <makevar>DISTDIR</makevar> 设置到一个共享的目录里,
- 那里可以被任何一个 <username>root</username> 用户写入,并且是由您的
- NFS 装载映射的。设置每一台机子的 <makevar>WRKDIRPREFIX</makevar>
- 到一个本地建造 (build) 目录。最后,如果您要建造和发布包
+ 那里可以被任何一个 <username>root</username> 用户写入, 并且是由您的
+ NFS 挂接映射的。 设置每一台机器的 <makevar>WRKDIRPREFIX</makevar>
+ 到一个本地构建 (build) 目录。最后,如果您要构建和发布包
(packages),那么您应该设置 <makevar>PACKAGES</makevar>
到一个类似于 <makevar>DISTDIR</makevar> 的目录。</para>
</sect2>