23.8. 跟踪多台计算机

贡献者 Mike Meyer.

当您有多台计算机需要跟踪同一份源代码树, 如果让它们各自都建立一份副本, 那么将会是一个及其浪费的磁盘空间, 网络带宽和 CPU 资源的行为。 我们可以使用其中一台计算机来完成绝大部分这些工作, 然后其他计算机通过 NFS 方式连接到这台计算机来完成剩下的工作。 本章将简述几种使用这种方式工作的方法。

23.8.1. 前期准备

首先, 我们需要选定一批将运行相同的二进制代码的计算机, 这里我们称它们为 编译客户机 (build set) 。 它们可以运行着各自的自定义内核, 但是他们的用户层必须运行着同一套二进制程序 (译者注: 运行相同版本的 world )。 然后, 在这批计算机中选择一台计算机用于构建系统与内核的计算机, 这里我们它为 编译主机 (build machine) 。 理想情况下, 它应该是一台有足够空闲 CPU 资源来执行 make buildworldmake buildkernel 指令的计算机。 接着, 您还需要选择一台用于对即将投入生产的应用做测试工作的计算机, 这里我们称它为 测试主机(test machine) 。 它 必须 是一台日常常用的计算机, 它可以由编译主机担当, 也可以专门选择一台。

这里, 所有编译客户机都需要从同一台计算机上挂载 /usr/obj/usr/src 。 理想情况下, 这些目录应该位于编译主机上的两个不同的磁盘驱动器上, 编译主机也是可以通过 NFS 实现将这两个目录分布到两个磁盘驱动器上。 如果您有多个编译客户机, 那么 /usr/src 应该保存在编译主机上, 其他计算机通过 NFS 共享这个目录。

最后, 需要保证所有编译客户机使用与编译主机相同的 /etc/make.conf/etc/src.conf 文件。 这是因为, 编译主机构建的基本系统将会应用于所有编译客户机。 此外, 编译主机还应在 /etc/make.conf 中设置 KERNCONF 参数, 并在里面列出所有编译客户机的 KERNCONF , 同时将自己的内核配置文件列在最前面。 如果希望构建所有编译客户机的内核, 则 /usr/src/sys/arch/conf 中必须包含所有编译客户机的内核配置文件。

23.8.2. 基本系统

在编译主机根据 Section 23.7.8.2, “编译基本系统” 中的内容构建完内核和 world (但不安装)。 就可以进入测试主机安装刚构建的内核, 如果您是通过 NFS 挂载 /usr/src/usr/obj 的情况, 则需要进入单用户模式后启动网络, 然后挂载它。 最简单的方法是在多用户模式下执行 shutdown now 命令, 直接切换到单用户模式, 一旦完成, 就可以像通常情况那样运行安装内核, world 和 mergemaster 命令了。 全部完成后, 就重启进入正常的多用户模式了。

确认一切在测试主机上都能正常工作后, 就可以相同方式在所有编译客户机上安装新软件。

23.8.3. Ports

类似, 这种想法也可用于 ports 树。 首先关键步骤是在所有编译客户机上从同一台计算机上挂载 /usr/ports 目录。 然后在 /etc/make.conf 文件中设置合适的参数来共享 distfiles 。 您还应该将 DISTDIR 安置到一个共享目录里, 这样就可以通过 NFS 让所有 root 用户都能写入数据。 为每台计算机设置一个本地目录为 WRKDIRPREFIX 变量。 如果需要构建并发布预编译二进制包, 则还应该设置 PACKAGES 变量, 设置方法与 DISTDIR 类似。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.