diff options
author | Xin LI <delphij@FreeBSD.org> | 2006-05-07 17:57:32 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2006-05-07 17:57:32 +0000 |
commit | d66ba51686af7bfa9e1792fbd4711af0a66ff3ac (patch) | |
tree | ff3e380facaa5e05108c03e749e36fef68b3c1bb /zh_CN.GB2312/books/handbook/cutting-edge | |
parent | 203607eebcaa9c71b76aef58bb76fad177028399 (diff) |
Notes
Diffstat (limited to 'zh_CN.GB2312/books/handbook/cutting-edge')
-rw-r--r-- | zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml | 153 |
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, …</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, …</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, …</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> |