如何设置 Poudriere 编译系统为 FreeBSD 服务器创建软件包

介绍

该端口系统是FreeBSD对于那些想要灵活和控制软件的用户来说,最大的资产之一,它允许管理员使用一个系统轻松地创建和维护基于源的安装,其设计是可靠和可预测的。

虽然这项功能的优点是巨大的,但对基于端口的管理提出的一些最常见的投诉是关于编译每个软件所需的时间和资源. 如果您管理大量的服务器,每个端口都编译了自己的端口,这就变得更加麻烦了。

为了缓解这个问题,管理员可以使用一个名为 poudriere的应用程序来构建和维护自定义包,而在技术上是用于构建各种架构的包,但poudriere通常被用作构建包的环境来创建和托管整个 FreeBSD 服务器基础设施的包。

通过利用poudriere,管理员可以根据需要使用端口系统定制软件,并编译软件包,以便轻松安装和管理软件。

在本指南中,我们将展示如何将一个服务器设置为pudriere作为构建机器,然后我们可以使用这个服务器作为任何额外服务器的包存库,虽然这种设置可以对单个服务器有益,但当额外的服务器开始使用相同的pudriere主机作为包源时,真正的效率得到提高。

由于港口建设是一个资源密集的过程,因此可能值得将其设置在比平时更强大的系统上。

<$>[注] 注: 截至 2022 年 7 月 1 日,DigitalOcean 不再支持通过控制面板或 API 创建新的 FreeBSD Droplets。

安装必要的端口管理软件

首先,我们将安装我们需要的所有端口。

像往常一样,在开始任何与端口相关的任务之前,我们将更新我们的端口树,以确保文件系统上的引用是新鲜的:

1sudo portsnap fetch update

在端口树更新后,我们可以开始安装软件。 首先,我们需要安装「pudriere」本身。 这是在端口树的「port-mgmt」类别中找到的。 要构建和安装,请前往该目录并使用「make」来编译和安装:

1cd /usr/ports/ports-mgmt/poudriere
2sudo make install clean

请自由选择任何提供的选项. 对于标准构建,没有一个是必不可少的。

接下来,如果您还没有安装它,我们将需要安装portmaster端口,我们将使用它来轻松地在我们的机器上生成一个我们希望poudriere构建的软件列表。

1cd /usr/ports/ports-mgmt/portmaster
2sudo make install clean

最后,我们还想安装一个Web服务器,这将为两种目的提供服务,首先,这将是我们的机器能够下载我们正在编译的包的方法,其次,‘poudriere’提供了一个Web界面,以便我们可以跟踪构建过程和监控日志。

对于本指南,我们将使用nginx作为我们的网页服务器,这是在端口树的www类别中找到的:

1cd /usr/ports/www/nginx
2sudo make install clean

您可以接受默认值或自定义,如果您有其他目的的特定需求。

当您完成编译和安装软件时,请确保在使用默认tcshcsh壳时重新评估您的 PATH:

1rehash

现在我们的软件已安装,我们可以开始配置每个组件。

创建一个SSL证书和密钥

当我们使用粉末构建包裹时,我们希望能够用私钥签名它们,这将确保我们的所有机器的创建包裹是合法的,而且没有人拦截与构建机器的连接以服务恶意包裹。

为了开始,我们将为我们的密钥和证书创建一个目录结构. 由于我们的所有可选软件配置都发生在 /usr/local/etc 目录中,并且因为其他软件使用 /usr/local/etc/ssl 位置,这就是我们将我们的文件放置的地方。

我们将确保我们有一个包含ssl目录的两个子目录,称为keyscerts

1sudo mkdir -p /usr/local/etc/ssl/{keys,certs}

我们的私钥,必须保密,将被放置在密钥目录中。这将被用来签署我们将创建的包裹。保持安全是确保我们的包裹不会被篡改的必不可少的。我们可以锁定目录,以便没有根或sudo特权的用户无法与目录或其内容进行交互:

1sudo chmod 0600 /usr/local/etc/ssl/keys

certs目录将包含我们用密钥创建的公开可用证书,因此,我们可以将默认权限留在该目录上。

接下来,我们将生成一个名为poudriere.key的4096位密钥,并通过键入将其放入我们的密钥目录:

1sudo openssl genrsa -out /usr/local/etc/ssl/keys/poudriere.key 4096

在生成密钥后,我们可以通过键入创建一个公开的 cert:

1sudo openssl rsa -in /usr/local/etc/ssl/keys/poudriere.key -pubout -out /usr/local/etc/ssl/certs/poudriere.cert

我们现在拥有签署包和验证签名所需的SSL组件,随后我们将配置我们的客户端使用生成的证书进行包验证。

配置粉末

现在我们有我们的SSL证书和密钥,我们可以开始配置pudriere

主要配置文件位于 /usr/local/etc/poudriere.conf. 在文本编辑器中使用 sudo 特权打开此文件:

1sudo vi /usr/local/etc/poudriere.conf

pudriere配置文件被评论得非常好,我们需要的大多数设置都已预定义,我们将做出一些具体的更改,但大部分都未受影响。

请注意,如果您的 FreeBSD 服务器正在运行 UFS 文件系统,那么您不应该设置这些 ZFS 特定的选项。 为了表明我们正在使用 UFS,我们必须将NO_ZFS标志设置为

1NO_ZFS=yes

另一方面,如果您的服务器使用 ZFS,您可以通过设置ZPOOL选项来配置poudriere以使用特定的池。 在此池中,您可以通过ZROOTFS选项指定poudriere将用于包、日志等的根。

1# NO_ZFS=yes
2ZPOOL=tank
3ZROOTFS=/poudriere

在构建软件时,‘poudriere’使用某种类型的监狱来将构建系统与主要操作系统分开,接下来,我们必须填写一个有效的主机,在那里构建机可以下载其对监狱所需的软件。

此选项应该已经存在,虽然目前尚未设置为有效的主机. 您可以将此设置更改为默认位置 ftp://ftp.freebsd.org 或使用更近的镜子,如果您知道:

1FREEBSD_HOST=ftp://ftp.freebsd.org

接下来,我们要确保我们的数据目录在pudriere根中是正确的设置,这是由POUDRIERE_DATA选项控制的,应该是默认的,但我们只会评论这个选项,以确保:

1POUDRIERE_DATA=${BASEFS}/data

下一个选项是CHECK_CHANGED_OPTIONSCHECK_CHANGED_DEPS 选项,第一个选项是poudriere 重建包,如果其选项已经改变,第二个选项是poudriere 重建包,如果上次编译以来依赖性有所改变。

这两种选项都存在于我们希望它们在配置文件中的形式,我们只需要放弃评论:

1CHECK_CHANGED_OPTIONS=verbose
2CHECK_CHANGED_DEPS=yes

接下来,我们将指向我们创建的SSL密钥的pudriere,以便它可以在创建时签署包。 用于指定此选项的名称是PKG_REPO_SIGNING_KEY。 删除此选项并更改路径以反映您之前创建的SSL密钥的位置:

1PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/poudriere.key

最后,我们可以将URL_BASE字符串设置为您的服务器可以访问的域名或IP地址。这将被poudriere用来构建可点击的输出链接。

1URL_BASE=http://server_domain_or_IP/

当您完成更改时,保存并关闭文件。

构建的环境

接下来,我们需要真正构建我们的建筑环境,正如前面所提到的,pudriere将使用监狱在孤立的环境中建造港口。

我们将不得不创建我们的监狱,并在里面安装FreeBSD。 可以有多个监狱,每个监狱都有不同的FreeBSD版本. 监狱的FreeBSD版本必须与服务器本身运行的版本相同或更老。

我们应该为我们正在创建的监狱选择一个描述性名称,这很重要,因为它将在客户端的存储配置中使用,这在构建 FreeBSD 的不同版本时可能非常重要。

我们将我们的监狱的名称指定为 -j,并使用 -v 选项标明要安装的 FreeBSD 版本。您可以在 This页面的表格发布列中找到支持的版本的格式。

对于我们而言,我们的监狱建设指挥将是这样的:

1sudo poudriere jail -c -j freebsd_10-1x64 -v 10.1-RELEASE

这将需要一段时间才能完成,所以要耐心。当你完成时,你可以通过键入查看已安装的监狱:

1poudriere jail -l
1JAILNAME VERSION ARCH METHOD TIMESTAMP PATH
2freebsd_10-1x64 10.1-RELEASE-p3 amd64 ftp 2015-01-06 20:43:48 /usr/local/poudriere/jails/freebsd_10-1x64

一旦你有一个监狱创建,我们将不得不安装一个港口树. 可以维护多个港口树以满足不同的开发需求. 我们将安装一个港口树,我们的监狱可以利用。

我们将称我们的树为,因为它准确地总结了这个树的使用(树的或最最新点)。

1sudo poudriere ports -c -p HEAD

再次,此程序将需要一段时间,因为整个港口树必须被收集和提取。当它完成时,我们可以通过键入查看我们的港口树:

1poudriere ports -l

完成此步骤后,我们现在已经有了编译我们的端口和构建包的结构,接下来,我们可以开始组装我们的端口列表,以构建和配置我们想要的每个软件的选项。

创建一个港口建设列表和设置港口选项

在使用「pudriere」编译时,我们在调用 build 命令时表示我们想要构建的端口. 可以单独指定端口,但这不是长期管理的良好解决方案。

创建的文件应该列出端口类别,然后是端口名和端口名称,以反映其在端口树中的位置,如下:

1port_category/first_port
2port_category/second_port
3port_category/third_port
4
5. . .

任何需要的依赖性都会自动构建,所以不要担心跟踪您想要安装的端口的整个依赖性树,您可以手动构建此文件,但如果您的基系统已经拥有大多数想要构建的软件,您可以使用端口管理员为您创建此列表。

在您这样做之前,您通常可以从系统中删除任何不必要的依赖,以保持端口列表尽可能干净。

1sudo pkg autoremove

之后,我们可以使用portmaster来获取我们在构建系统上明确安装的软件列表,该portmaster命令可以使用--list-origin选项以正确的格式输出明确安装的端口列表(不是依赖)。

我们可以将此输出输入到sort中,以便对列表进行字母化,以便更容易找到项目。我们可以将结果输出到 `/usr/local/etc/poudriere.d’ 目录中的文件中。

1portmaster --list-origins | sort -d | sudo tee /usr/local/etc/poudriere.d/port-list

查看列表 如果有任何您不希望包含的端口,请删除相关的行,这也是添加您可能需要的额外端口的机会。

如果您使用特定的 make.conf 选项来构建您的端口,您可以在您的 /usr/local/etc/poudriere.d 目录中为每个监狱创建一个 make.conf 文件。

1sudo vi /usr/local/etc/poudriere.d/freebsd_10-1x64-make.conf

例如,如果您不想构建任何文档、示例、母语支持或 X11 支持,则可以设置:

1OPTIONS_UNSET+= DOCS NLS X11 EXAMPLES

之后,我们可以配置我们每个端口,这些端口将使用我们选择的选项创建文件。

如果您在主机系统上自定义了您的端口,您可以将配置复制到poudriere,以便使用这些设置。 要做到这一点,请在/usr/local/etc/poudriere.d目录中创建一个新的目录,以您的监狱命名,并附有选项

1sudo mkdir /usr/local/etc/poudriere.d/freebsd_10-1x64-options

现在,您可以通过键入来复制您已经在主机系统上使用的选项:

1sudo cp -r /var/db/ports/* /usr/local/etc/poudriere.d/freebsd_10-1x64-options

如果您完成上述步骤,您将有我们将配置的选项的基线,但许多依赖仍然需要配置。

您可以使用选项命令配置任何尚未配置的内容,我们应该通过我们创建的端口树(使用-p选项)和我们设置这些选项的监狱(使用-j选项)。

我们的命令将是这样的:

1sudo poudriere options -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list

您将看到列表中的每个端口和没有相应选项的任何依赖的对话框在选项目录中。在选择屏幕中将预先选择您的make.conf文件中的规格。

如果您希望在未来重新配置您的端口的选项,您可以使用-c选项重新运行上述命令,这将向您显示所有可用的配置选项,无论您是否在过去做过选择:

1sudo poudriere options -c -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list

建设港口

现在,我们终于准备好开始建造港口。

我们需要做的最后一件事是确保我们的监狱和港口树都处于最新状态,这可能不会是您第一次建造港口时的问题,因为我们刚刚创建了港口树和监狱,但每次运行建设时都会习惯这样做。

更新你的监狱,类型:

1sudo poudriere jail -u -j freebsd_10-1x64

要更新您的端口树,键入:

1sudo poudriere ports -u -p HEAD

一旦完成,我们可以启动大量构建过程。

** 注意**:这可能是一个非常漫长的运行过程. 如果您通过SSH连接到您的服务器,我们建议您安装屏幕并启动会话:

1cd /usr/ports/sysutils/screen
2sudo make install clean
3
4rehash
5screen

要开始构建,我们只需要使用大批量命令并指向我们已经配置的所有个别部件。

1sudo poudriere bulk -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list

这将启动一些工人(取决于您的 poudriere.conf 文件或可用的 CPU 数量),并开始构建端口。

在构建过程中的任何时间,您可以通过握住CTRL键并点击t来获取有关进展的信息:

1CTRL-t

该过程的某些部分将产生比其他部分更多的输出。

如果您需要退出,您可以通过按aCTRL来分离屏幕会话,将控制器移动到屏幕,然后按d键分离会话:

1CTRL-a d

当您想返回会话时,您可以键入:

1screen -x

设置 Nginx 来服务前端和存储库

当你的包正在构建时,我们可以利用这个机会来配置 Nginx. 打开另一个终端,如上所示脱离你的屏幕会话,或通过键入CTRL-a c启动一个新的屏幕窗口(你可以通过键入CTRL-a nCTRL-a p在窗口之间切换)。

网站服务器将用于两个不同的目的:

  • 它将服务于实际的包库,其他主机可以用来下载您的自定义编译包
  • 它将服务于粉末网页前端,可用于监控构建过程

我们在本指南开始时安装了 Nginx,但没有配置它。

首先,通过将nginx_enable="YES"行添加到/etc/rc.conf文件中来启用服务器,这将启动服务器在启动时,并允许我们使用传统的服务命令来管理该过程:

1sudo sh -c "echo 'nginx_enable="YES"' >> /etc/rc.conf"

现在,我们可以调整默认配置文件,在文本编辑器中使用sudo特权打开它:

1sudo vi /usr/local/etc/nginx/nginx.conf

在此文件中,我们将从服务器 {}块中删除所有内容,并将其替换为我们自己的配置,请确保您留下匹配的键({})不受影响,以确保您的文件有效。

服务器的背景下,我们可以设置一些基本的指令,以便我们的 Web 服务器在端口 80 上响应传统的 HTTP 流量,并响应我们的服务器的域名或 IP 地址。

 1# http context
 2
 3. . .
 4
 5    server {
 6        listen 80 default;
 7        server_name server_domain_or_IP;
 8        root /usr/local/share/poudriere/html;
 9    }
10
11}

接下来,我们将添加两个位置块。

虽然我们上面定义的基本指令将处理大部分的 Web 界面,但我们需要告诉 Nginx 我们存储的日志和实际数据的目录。

最后,我们的第一个位置块将看起来像这样:

 1# http context
 2
 3. . .
 4
 5    server {
 6        listen 80 default;
 7        server_name server_domain_or_IP;
 8        root /usr/local/share/poudriere/html;
 9
10        location /data {
11            alias /usr/local/poudriere/data/logs/bulk;
12            autoindex on;
13        }
14    }
15}

这应该使我们的网页界面正常工作(在我们将在一瞬间进行的mime.types文件的额外修改后)。

这些包将再次存储在/usr/local/poudriere下方的目录中,这次是data/packages下方,我们可以在/packages位置提供此功能,再一次,我们可以打开autoindex来查看目录的内容,这样我们也可以在网页浏览器中查看文件。

一旦这项最终修改完成,‘服务器’块应该是这样的:

 1#http context
 2
 3. . .
 4
 5    server {
 6        listen 80 default;
 7        server_name server_domain_or_IP;
 8        root /usr/local/share/poudriere/html;
 9
10        location /data {
11            alias /usr/local/poudriere/data/logs/bulk;
12            autoindex on;
13        }
14
15        location /packages {
16            root /usr/local/poudriere/data;
17            autoindex on;
18        }
19    }
20}

保存并关闭文件,当你完成。

接下来,我们将对我们的mime.types文件进行一个小小的修改. 使用当前的设置,如果您在网页浏览器中点击日志,它将下载该文件,而不是将其显示为简单的文本。

在文本编辑器中打开 sudo 特权的 Nginx mime.types 文件:

1sudo vi /usr/local/etc/nginx/mime.types

查找指定文本/平面内容类型的条目,并将日志附加到当前文件类型列表的末尾,分隔一个空间:

1. . .
2
3text/mathml mml;
4text/plain txt log;
5text/vnd.sun.j2me.app-descriptor jad;
6
7. . .

保存并关闭文件,当你完成。

现在,检查您的配置文件的语法,输入:

1sudo service nginx configtest

如果您的配置测试报告没有语法错误,请通过键入开始 Nginx:

1sudo service nginx start

如果启用了防火墙,请记住配置您的规则以允许流量到端口80并重新启动服务。

现在,您可以通过在您的 Web 浏览器中访问您的服务器的域名或 IP 地址来查看poudriere Web 界面:

1http://server_domain_or_IP

你应该看到主页的Pudriere页面:

Poudriere main page

如果您点击通过,您应该能够查看您的端口构建的过程或结果,您也应该能够点击完成的任何构建的日志。

如果您想在浏览器中查看您的编译包,则这些包应通过从/packages开始的等级列表可用:

Poudriere packages repo

您可能需要等待整个构建完成以查看包裹. 点击链接将向您展示您用pudriere大批量构建命令生产的编译包。

配置客户包

现在你已经建立了包和配置了一个存储库来服务你的包,你可以配置你的客户端使用你的服务器作为其包的来源。

将 Build 服务器配置为使用自己的 Repo 包

我们可以通过配置构建服务器以使用它正在构建的包来开始。

首先,我们需要创建一个目录来存储我们的存储配置文件:

1sudo mkdir -p /usr/local/etc/pkg/repos

在此目录中,我们可以创建我们的存储配置文件. 它必须以 .conf 结束,所以我们会将其称为 poudriere.conf 以反映其目的:

1sudo vi /usr/local/etc/pkg/repos/poudriere.conf

我们将重新定义仓库名称为pudriere。在定义中,我们将指向磁盘上的位置,我们的包裹被存储在那里。这应该是一个目录,将你的监狱名称和港口树名称与一个Dash相结合。检查你的文件系统以确定。我们还将通过指向我们创建的证书来设置我们的包裹的签名验证。

最终,你的文件应该看起来像这样的东西:

1poudriere: {
2    url: "file:///usr/local/poudriere/data/packages/freebsd_10-1x64-HEAD",
3    mirror_type: "srv",
4    signature_type: "pubkey",
5    pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
6    enabled: yes
7}

如果你想 prefer 编译的包,然后再回到主要 FreeBSD 存储库提供的包,你可以在这里设置优先级,告诉它更喜欢这个存储库之外的包。

请记住,以这种方式混合包可以产生一些复杂的后果. 如果官方存储库具有高于本地存储库版本的包版本,则您的编译包可能会被官方存储库的通用包所取代(直到您用pudriere重建并用pkg重新安装)。

如果您选择混合这两个包源,准备仔细审核每个安装,以确保您不会意外导致不必要的行为。

若要混合包,请将优先级设置添加到您的库定义中,说明本地复制具有更高的优先级:

1poudriere: {
2    url: "file:///usr/local/poudriere/data/packages/freebsd_10-1x64-HEAD",
3    mirror_type: "srv",
4    signature_type: "pubkey",
5    pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
6    enabled: yes,
7    priority: 100
8}

保存并关闭文件,当你完成。

如果您选择 only 来安装您自己定制的包(更安全的路径),您可以放弃优先级设置,但您将想要禁用默认存储库。

1sudo vi /usr/local/etc/pkg/repos/freebsd.conf

在内部,使用名称FreeBSD,以匹配默认存储库定义。

1FreeBSD: {
2    enabled: no
3}

保存并关闭文件,当你完成。

无论您的配置选择如何,您现在应该准备好使用您的存储库. 通过键入更新您的包列表:

1sudo pkg update

现在,您的服务器可以使用pkg命令从本地存储库中安装包。

配置远程客户端以使用 Build 机器的存储库

在构建机器上设置pudriere的最令人信服的理由之一是使用该主机作为许多其他机器的存储库。

为了从我们的客户端机器连接到我们的构建主机,您应该在您的本地计算机上启动一个SSH代理,以存储您的SSH密钥凭证。

OpenSSL 配备了一个 SSH 代理,可以通过在您的家庭计算机上键入此功能来启动:

1eval $(ssh-agent)

接下来,您需要通过键入添加您的SSH密钥:

1ssh-add

之后,您可以通过使用-A旗帜连接时将本地SSH凭据转发到客户端机器,这将允许您从客户端机器访问任何机器,就像您从家用机器访问它一样:

1ssh -A freebsd@client_domain_or_IP

一旦您在您的远程客户端机器上,第一步是创建目录结构(如果它不存在),以便您存储证书。

1sudo mkdir -p /usr/local/etc/ssl/{keys,certs}

现在我们可以通过SSH连接到我们的构建机器,并将证书文件导回我们的客户端机器. 由于我们转发了我们的SSH凭证,我们应该能够做到这一点而不需要密码:

1ssh freebsd@server_domain_or_IP 'cat /usr/local/etc/ssl/certs/poudriere.cert' | sudo tee /usr/local/etc/ssl/certs/poudriere.cert

此命令将使用本地 SSH 凭证连接到客户端机器的构建机器,一旦连接,它将显示您的证书文件的内容,并通过 SSH 隧道将其送回远程客户端机器,从那里我们使用sudo tee组合将证书写入我们的目录。

一旦完成,我们可以像我们在构建机器本身那样构建我们的存储库目录结构:

1sudo mkdir -p /usr/local/etc/pkg/repos

现在,我们可以创建一个类似于我们在构建机上使用的存储文件:

1sudo vi /usr/local/etc/pkg/repos/poudriere.conf

区别在于URL的位置和镜像类型. 再次,我们可以选择混合包或使用 only 我们的自定义编译包。

如果你想将自己的自定义包与官方存储库的包混合,你的文件应该看起来像这样:

1poudriere: {
2    url: "http://server_domain_or_IP/packages/freebsd_10-1x64-HEAD/",
3    mirror_type: "http",
4    signature_type: "pubkey",
5    pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
6    enabled: yes,
7    priority: 100
8}

如果您只想使用已编译的包,您的文件应该看起来像这样:

1poudriere: {
2    url: "http://server_domain_or_IP/packages/freebsd_10-1x64-HEAD/",
3    mirror_type: "http",
4    signature_type: "pubkey",
5    pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
6    enabled: yes

此外,如果您只使用自己的包,请记住创建另一个存储配置文件,以取代默认的 FreeBSD 存储配置:

1sudo vi /usr/local/etc/pkg/repos/freebsd.conf

将下列内容放入文件中以禁用官方存储库:

1FreeBSD: {
2    enabled: no
3}

完成后,更新您的pkg数据库,开始使用您的自定义编译包:

1sudo pkg update

这个过程可以在你想要的多少 FreeBSD 客户端机上重复。

当更新可用时重新构建您的包

但是,当新更新可用时,您需要不时重新构建您的包,特别是如果它们与安全相关。

幸运的是,重建软件包的程序非常简单,首先,您应该更新您的 FreeBSD 监狱,以便您的软件包与最新的操作系统相结合。

1sudo poudriere jail -u -j freebsd_10-1x64

接下来,您应该更新您的端口树,以便每个端口的最新版本可供监狱使用。

1sudo poudriere ports -u -p HEAD

在监狱和端口树更新后,您可以更改您的端口列表,如果您想要做任何更改:

1sudo vi /usr/local/etc/poudriere.d/port-list

如果您需要调整任何 make.conf 选项,您可以通过编辑与您的构建相关的文件来做到这一点:

1sudo vi /usr/local/etc/poudriere.d/freebsd_10-1x64-make.conf

您可以通过键入以下方式检查您的端口的任何新选项:

1sudo poudriere options -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list

如果您想查看您的端口的所有选项,则可以添加-c标志,这在解决构建或运行时间问题时很有帮助:

1sudo poudriere options -c -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list

完成上述准备步骤后,您可以通过键入重新编译已更改或更新的任何端口:

1sudo poudriere bulk -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list

您可以自由地监控 Web 界面中的进展. 一旦新包被编译,您可以通过键入在每个机器上更新包:

1sudo pkg upgrade

这将使您能够很容易地在整个FreeBSD基础设施上更新自定义包。

结论

在本指南中,我们介绍了如何配置poudriere来编译和包装针对我们的构建机和外部客户端的自定义端口组合。

通过利用pudriere,您可以利用FreeBSD的两种可选软件管理系统。对于许多用户来说,这构成了两种世界中最好的选择。

Published At
Categories with 技术
comments powered by Disqus