From 7bc7b239eec45fd932c99d1f2558a1baa49f203a Mon Sep 17 00:00:00 2001 From: Xin LI Date: Wed, 6 Apr 2005 12:00:04 +0000 Subject: MFen 1.208 -> 1.216: Local revisions: 1.1.1000.1-1.1.1000.3 Part of language improvements submitted by: "samcall" from FreeBSDChina Community Obtained from: The FreeBSD Simplified Chinese Project CVS --- .../books/handbook/cutting-edge/chapter.sgml | 144 ++++++++++++--------- 1 file changed, 84 insertions(+), 60 deletions(-) (limited to 'zh_CN.GB2312/books/handbook') diff --git a/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml b/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml index 5461e0d311..1c8d47b7c4 100644 --- a/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/cutting-edge/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Simplified Chinese Project - Original Revision: 1.208 + Original Revision: 1.216 $FreeBSD$ --> @@ -144,11 +144,10 @@ - 因为您听说里边有些新而酷 (cool) 的功能, - 而且您想在首先在您的天地 (block) 里拥有它, - 所以紧紧跟随、不放过预先发行的每一个字节。 - 由于是系统中第一个使用新功能的人, - 也就意味着在系统里产生新问题的您是第一个。 + 追求最新功能, 您听说里面有一些很酷的新功能, + 并希望成为您周围的人中第一个尝试它们的人。 + 尽管您能够因此首先了解到最新的功能, + 但这也意味着在出现新的 bug 时您也首当其冲。 @@ -435,23 +434,28 @@ (kernel panics)、数据出错。 - Anonymous CVS - Anonymous CVS 和 + + CVS + 匿名 + + + 匿名 CVSCVSup 使用 下拉(pull) - 模式更新源码。在 CVSup 方式下,用户 - (或 cron 脚本) 调用 cvsup - 程序,并且与某个地方的 cvsupd - 服务器交互一起更新您的文件。您收到的更新文件是更新到秒的, - 并且在您得到他们时,也只有那时您会需要它们。 - 您可以轻易的限定您的更新到您感兴趣的指定文件或目录。 - 服务器会根据您所有的和您想要的更新在空闲时生成。 - Anonymous CVS 相比 - CVSup 要简单一点, - CVSup 只是 - CVS(让您可以直接从远端的 - CVS 仓库里下拉更改)的扩展。CVSup - 完成得更有效率,但 Anonymous CVS - 更易使用。 + 模式来更新源代码。 在 + CVSup 中, 用户 (或者 + cron 叫本) + 会调用 cvsup 程序, 后者会同某一个 + cvsupd 服务进行交互, 以更新您的文件。 + 您接到的更新是更新时刻最新的, 并且您只会收到那些需要的更新。 + 您可以很容易地限制更新的范围, 只更新那些您需要的文件。 + 服务器端会根据您手头已经有的文件即时地生成更新内容。 + 匿名 CVS + 相对于 CVSup 而言要简单一些, 因为它只是对 + CVS 的一种扩展, + 让您可以从远程的 CVS 代码库得到更新。 + CVSup 相对而言, + 要比 匿名 CVS 更有效率, + 然而后者却更容易使用。 CTM @@ -534,15 +538,29 @@ 更新系统的规范途径 - 要更新系统,就要使用下面的过程: + 要更新系统, 您必须查看 + /usr/src/UPDATING 文件, 以了解 + buildworld 之前需要完成的步骤, + 然后使用下面的过程: &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; reboot - 您应该启动到单用户模式下(例如从启动提示符处使用 - boot -s)。然后执行: + + 有些时候, 需要额外地执行一次 + mergemaster -p 才能够完成 + buildworld 步骤。 + 这些会在 UPDATING 中进行描述。 + 一般而言, 您可以简单地跳过这一步, 只要进行的不是 + &os; 的大跨度版本升级。 + + + installkernel 成功完成之后, + 您需要引导到单用户模式 + (例如, 在加载器提示后面输入 boot -s)。 + 接下来执行: &prompt.root; mergemaster -p &prompt.root; make installworld @@ -610,10 +628,10 @@ 有些配置文件在天天运行的系统里也是要使用到的。尤其是 /etc/group - 偶尔,某些make - installworld的安装需要特定的用户名或用户组存在。 - 在升级时,有可能这些用户或组就不存在。这会在升级过程造成出错。 - 有时,make installworld会首先检查这些用户或组是否存在。 + 偶尔, 作为安装过程的一部分, + make installworld 会要求事先创建某些特定的用户或组。 + 在进行升级时, 它们可能并不存在。 这会给升级造成问题。 + 有时, make buildworld 会检查它们是否已经存在。 最近就有个这样的例子,当时 smmsp 用户是被增加了的。当 &man.mtree.8; 试着建立 @@ -697,16 +715,16 @@ 删除 <filename>/usr/obj</filename> - 在重建部分系统时,它们被(默认地)放到了 - /usr/obj 目录下边。这些目录影射到了 - /usr/src 下边。 + 随着重新构建系统的进行, 编译结果会放到 (默认情况下) + /usr/obj 下。 这些目录会映射到 + /usr/src - 删除这个目录,您可以加快make buildworld的过程, - 并且省下与依赖关系有关的许多头痛的事情。 + 通过删除这个目录, 可以加速 make buildworld + 的过程, 并避免相互依赖关系等复杂的问题。 - /usr/obj 下的有些文件可能设置了不可改 - (immutable) 属性(查看 &man.chflags.1; 了解更多), - 您必须先把这些标志去掉。 + /usr/obj + 中的某些文件可能设置了不可改标记 (详情参见 &man.chflags.1;), + 需要首先去掉这些标志。 &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * @@ -860,7 +878,7 @@ Script done, … 耗时 - Rebuilding world + rebuilding world timings @@ -913,8 +931,8 @@ Script done, … 调高到了 1 以上,而且还设置了 noschg 或相似的标识到了您的内核二进制里边,您可能会发现转换到单用户模式里使用 installkernel 是很有必要的。 - 另外您应该也能毫无问题地从多用户模式执行这两个命令。查看 - &man.init.8; 了解更多关于 内核安全级(kern.securelevel) + 如果您没有设置它, 则应该也能毫无问题地在多用户模式执行这两个命令。 请参考 + &man.init.8; 以了解更多关于 内核安全级(kern.securelevel) 的信息;查看 &man.chflags.1; 了解更多关于不同文件标识的信息。 如果您升级到 &os; 4.0 以前版本,您应旧的内核 build 程序。但还是推荐您使用新版的 &man.config.8;, @@ -1242,11 +1260,13 @@ Script done, … 更新<filename>/stand</filename> - 这一步只是为了收尾,可以安全省略。如果您在使用 - FreeBSD 5.2 或更新的版本,/rescue - 目录会为用户进行自动更新,使用的是在 make installworld - 期间静态编译地最新的二进制文件,因此也就不用废话更新 - /stand 的必要性了。 + 这一步应被看作最后的扫尾工作。 您可以安全地跳过这一步。 + 如果正在使用的是 FreeBSD 5.2 或更新的版本, + /rescue 目录会为用户自动更新, + 其内容是在 make installworld + 过程中所生成的静态联编的可执行程序, + 这就不需要更新 /stand (在 FreeBSD 5.2 + 和更新版本中不再存在) 了。 为了完成,您可能想额外地更新 /stand @@ -1346,11 +1366,12 @@ Script done, … /usr/obj 包含了所有在编译阶段生成的目标文件。通常, - 在make buildworld过程中第一步之一就是删除这个目录重新开始。 + 在 make buildworld 过程中第一步之一就是删除这个目录重新开始。 这种情况下,在您完成后,保留 /usr/obj 没有多大意义,还可释放一大堆磁盘空间(通常在 340 MB 左右)。 - 只是,如果您清楚您在干什么,您可以让make buildworld跳过这一步。 + 只是,如果您清楚您在干什么,您可以让 + make buildworld 跳过这一步。 这会让后继的 build 执行得更快,因为大部分的源码都不必再进行编译了。 这个的另一面就在于敏感的依赖问题可以潜在, 并以奇怪的方式引起 build 的失败。这在 &os; 邮件列表里经常引起沸腾, @@ -1367,22 +1388,23 @@ Script done, … 依赖于您在您找到问题之前整个过程进行了多远。 - 大体上 (这个并不是硬性规定), - make buildworld过程会建立新版的基本工具 - (如 &man.gcc.1; 和 &man.make.1;) 以及系统二进制文件。 - 这些工具和二进制文件然后被安装。新的工具和库然后用来重建它们自已, - 并再次被安装。整个系统 (现在包括了常规的用户程序,如 - &man.ls.1; 或 &man.grep.1;) 然后使用新的系统文件被重建。 + 一般而言 (当然这并不是硬性规定), + make buildworld + 的过程中将会首先构建新版的基本构建工具 (例如 &man.gcc.1;, 以及 + &man.make.1;) 和系统库。 随后会安装这些工具和库。 + 这些新版本的工具和库在随后将被用于重新编译和连接它们本身。 + 整个系统 (现在包括了常规的用户程序, 例如 + &man.ls.1; 或 &man.grep.1;) 会同新版的系统文件一起被重新构建。 - 如果您处在最后阶段,您就知道了 - (因为您已经看过您存储的输出),然后您可以做(相当安全): + 如果您正处于最后一个阶段, 并且了解它 (因为您已经看过了所保存的输出) + 则可以 (相当安全地) 做: … 问题修复 … &prompt.root; cd /usr/src &prompt.root; make -DNOCLEAN all - 这将不能取消 - make buildworld先前所做的工作。 + 这样就不会取消先前的 + make buildworld 所做的工作。 make buildworld的输出中如果看到如下信息: @@ -1390,9 +1412,11 @@ Script done, … Building everything.. -------------------------------------------------------------- - 那么这样做就是相当安全的。 - - 如果您没有看到那个信息,或者您不能确定,那么安全第一,从头开始。 + 出现在 make buildworld 的输出中, + 则这样做应该不会有什么问题。 + + 如果没有看到这样的信息, 或者您不确定, + 则从头开始构建将是万无一失的做法。 -- cgit v1.2.3