如何建立一个Poudriere构建系统为您的FreeBSD服务器软件包

介绍

ports系统是FreeBSD的最大的资产之一,用户希望灵活性和控制他们的软件。 它允许管理员使用设计为可靠和可预测的系统轻松创建和维护基于源的安装。

虽然此功能的优点是巨大的,一些最常见的投诉针对基于端口的管理是关于编译每个软件所需的时间和资源。 如果您管理大量的服务器,每个服务器都编译自己的端口,这就变得更加麻烦。 虽然FreeBSD包提供了一个加速安装的替代方法,但它牺牲了端口授予的控制。

为了缓解这一问题,管理员可以使用应用程序调用poudriere来构建和维护定制软件包。 虽然在技术上创造了建包各种架构, poudriere经常被用来作为一个整体建筑环境营造和主机包FreeBSD服务器的整个基础设施。

通过利用poudriere ,管理员可以使用端口的系统定制的软件是必要和编译软件包,易于安装和软件管理。 任何数量的FreeBSD服务器都可以使用一台主机与poudriere安装为自己的包源,使他们能够快速,方便地下载和安装定制的,预编译的可执行文件。

在本指南中,我们将演示如何建立一个服务器poudriere作为构建的机器。 然后,我们可以使用此服务器作为任何其他服务器的软件包的存储库。 虽然这种设置可以是一个单一的服务器是有利的,当更多的服务器开始使用相同的实际效率增益被视为poudriere主机作为包源。

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

安装必要的端口管理软件

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

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

sudo portsnap fetch update

在更新ports树之后,我们可以开始安装软件。 首先,我们需要安装poudriere本身。 这是在发现ports-mgmt的端口树的类别。 要建立和安装,进入该目录,并使用make编译和安装:

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

随意选择任何提出的选项。 对于标准构建,没有必要。

接下来,如果您还没有安装它,我们需要安装portmaster的端口。 我们将使用它来方便地生成我们的机器,我们要上的软件列表poudriere建设。 这是在ports-mgmt类别,以及:

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

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

对于本指南中,我们将使用nginx为我们的Web服务器。 这是在发现www端口树的种类:

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

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

当您完成编译和安装软件时,一定要重新评估你的PATH如果你使用的是默认tcshcsh外壳:

rehash

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

创建SSL证书和密钥

当我们建立与包poudriere ,我们希望能够用私钥签字。 这将确保我们的所有机器,创建的包是合法的,没有人拦截到构建机器的服务恶意软件包的连接。

首先,我们将为我们的密钥和证书创建一个目录结构。 因为我们所有的可选软件配置发生在内部/usr/local/etc的目录,因为其他软件使用/usr/local/etc/ssl的位置,这是我们将会把我们的文件。

我们将确保我们有一个ssl ,它包含两个子目录称为目录keyscerts 我们可以在一个命令中通过键入:

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

我们的专用密钥,其必须保持秘密,将被放置在keys目录。 这将用于签署我们将要创建的包。 保持这种安全是确保我们的包不被篡改的关键。 我们可以锁定该目录,使用户无需root或sudo权限,将无法与目录或它的内容交互:

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

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

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

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

密钥生成后,我们可以通过键入以下命令来创建公钥:

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

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

配置Poudriere

现在,我们有我们的SSL证书和密钥,我们就可以开始配置poudriere本身。

主配置文件位于/usr/local/etc/poudriere.conf 打开这个文件sudo在文本编辑器的权限:

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

poudriere配置文件是很好的注释,并且拥有大部分的设置,我们需要预先定义。 我们将进行一些具体的更改,但保留大部分的完整。

如果你的FreeBSD服务器运行在DigitalOcean上,文件系统将是UFS。 有在特定的ZFS选项poudriere ,我们不应该设置。 为了表明我们正在使用UFS,我们必须设置NO_ZFS标志为“yes”。 在文件中查找并取消注释此选项:

NO_ZFS=yes

如果,另一方面,您的服务器使用ZFS,您可以配置poudriere通过设置使用特定池ZPOOL选项。 在这个池,您可以指定根poudriere将使用包,日志等与ZROOTFS选项。 请注意,如果你有这两个选项不应设置NO_ZFS设置为“yes选项:

# NO_ZFS=yes
ZPOOL=tank
ZROOTFS=/poudriere

在构建软件, poudriere使用类型监狱,以构建系统从主操作系统分开。 接下来,我们必须填写一个有效的主机,其中构建计算机可以下载jail所需的软件。 这是通过配置FREEBSD_HOST选项。

此选项应已存在,但当前未设置为有效的主机。 您可以更改此为默认ftp://ftp.freebsd.org位置,或使用更紧密的镜子,如果你知道的人:

FREEBSD_HOST=ftp://ftp.freebsd.org

接下来,我们要肯定的是,在我们的数据目录poudriere根设置是否正确。 这是控制与POUDRIERE_DATA选项应该被默认,但我们会取消对选项只是要确定:

POUDRIERE_DATA=${BASEFS}/data

接下来的选项,我们应该取消注释是CHECK_CHANGED_OPTIONSCHECK_CHANGED_DEPS选项。 第一个选项告诉poudriere重建软件包时它的选项已经改变。 第二个选项告诉告诉poudriere自上次编译时的依赖已经改变了重建软件包。

这两个选项以我们希望它们在配置文件中的形式存在。 我们只需要取消注释他们:

CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes

下一步,我们将指向poudriere到我们创建的,因此,它建立它可以签署包SSL密钥。 用于指定这个选项被称为PKG_REPO_SIGNING_KEY 取消注释此选项并更改路径以反映您之前创建的SSL密钥的位置:

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

最后,我们可以设置URL_BASE串到你的服务器可以达到了域名或IP地址。 这将由用于poudriere构造在其输出链路可被点击。 您应该包含协议,并以斜杠结束值:

URL_BASE=http://server_domain_or_IP/

完成更改后,保存并关闭文件。

创建构建环境

接下来,我们需要实际构建我们的构建环境。 正如前面提到的, poudriere将使用监狱在一个孤立的环境中建立的端口。

我们将创造我们的监狱,有poudriere内安装FreeBSD。 可能有多个jail,每个都有不同版本的FreeBSD。 被监禁的FreeBSD版本必须与服务器本身运行的版本相同或更早。 对于本指南,我们将专注于一个镜像宿主系统的架构和FreeBSD版本的单个监狱。

我们应该为我们创建的监狱选择一个描述性名称。 这是非常重要的,因为它将在客户端的存储库配置中使用,这在构建不同版本的FreeBSD时非常重要。 man页还指导您避免使用名称中带点因为与其它工具的一些互动。 例如,在本指南中,我们在64位架构上运行FreeBSD 10.1,因此我们将其称为“freebsd_10-1x64”。

我们指定我们与监狱的名字-j ,我们指出的FreeBSD版本使用安装-v选项。 您可以在表上的“版本”列中支持的版本的格式页面。 如果你是以下-CURRENT-STABLE ,而不是释放,可以使用上找到的格式页面(如11-CURRENT )。

为了我们的目的,我们的监狱构造命令将如下所示:

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

这需要一段时间才能完成,所以要耐心等待。 完成后,您可以通过键入以下内容查看已安装的jail:

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

一旦你创建了一个jail,我们将不得不安装一个ports树。 可以维护多个端口树以便满足不同的开发需求。 我们将安装一个单一的ports树,我们的监狱可以利用。

我们可以使用-p标志来命名我们港口的树。 我们将称为我们的树“HEAD”,因为它准确地总结了这棵树的使用(树的“头”或最新的点)。 我们将定期更新它以匹配最新版本的ports树可用:

sudo poudriere ports -c -p HEAD

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

poudriere ports -l

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

创建端口构建列表和设置端口选项

当编译poudriere ,我们表明我们希望在调用编译命令时建立的端口。 可以单独指定端口,但这不是长期管理的好解决方案。 相反,我们将创建一个端口列表,我们可以直接传递给命令。

文件创建应该列出端口类别,后面跟着一个斜杠和端口名称,以反映其在ports树中的位置,如下所示:

port_category/first_port
port_category/second_port
port_category/third_port

. . .

任何需要的依赖都将被自动构建,所以不必担心跟踪您想要安装的端口的整个依赖关系树。 您可以手动生成此文件,但如果你的基础系统已大部分软件要建立,可以使用portmaster为您创造这个名单。

在执行此操作之前,通常最好从系统中删除任何不需要的依赖关系,以使端口列表尽可能保持干净。 您可以输入以下命令:

sudo pkg autoremove

之后,我们可以得到我们使用我们的编译系统上明确安装的软件的列表portmaster portmaster命令的输出,通过使用正确的格式显式安装端口(不依赖)的列表--list-origins选项。

我们可以管这个输出到sort按字母顺序排列的列表,以使其更容易找到的物品。 我们可以结果输出到在一个文件/usr/local/etc/poudriere.d目录。 我们称这个文件port-list

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

查看列表。 如果有任何您不想包括的端口,请删除其关联的行。 这也是添加您可能需要的其他端口的机会。

如果你使用特定make.conf选项来建立你的端口,你可以创建一个make.conf你中每个监狱的文件/usr/local/etc/poudriere.d目录。 例如,对于我们的监狱,我们可以创建一个make.conf具有此名称的文件:

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

在里面,你可以把任何你想要使用的选项,当建立您的端口。 例如,如果您不想构建任何文档,示例,本地语言支持或X11支持,您可以设置:

OPTIONS_UNSET+= DOCS NLS X11 EXAMPLES

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

如果已经定制你的主机系统上的端口,您可以复制配置到poudriere利用这些设置。 要做到这一点,创建的新目录/usr/local/etc/poudriere.d你入狱后命名,目录-options追加到末尾。 对于我们的指南,我们可以通过键入:

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

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

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

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

您可以配置已经不使用了已经配置的任何options命令。 我们应该在这两个通(使用我们创建的端口树-p选项),我们设置这些选项(使用监狱-j选项)。 我们还必须指定我们要使用配置的端口列表-f选项。

我们的命令将如下所示:

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

你会看到每个没有在设置相应的选项列表上的端口和任何依赖关系的对话框-options目录。 在这些规范make.conf文件将在选择屏幕被预选。 选择您要使用的所有选项。

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

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

建设港口

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

我们需要做的最后一件事是确保我们的jail和ports树是最新的。 这可能不会是第一次构建端口的问题,因为我们刚刚创建ports树和监狱,但它是好习惯,这样做每次运行构建。

要更新您的监狱,请键入:

sudo poudriere jail -u -j freebsd_10-1x64

要更新您的ports树,请键入:

sudo poudriere ports -u -p HEAD

一旦完成,我们可以开始批量构建过程。

注意 :这可以是一个很长的运行中的进程。 如果您连接到服务器通过SSH,我们建议您安装screen ,并启动一个会话:

cd /usr/ports/sysutils/screen
sudo make install clean

rehash
screen

为了启动构建,我们只需要使用bulk命令,并指向所有的单件,我们已经配置。 如果您使用本指南中的值,命令将如下所示:

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

这将启动一批工人(根据您的poudriere.conf文件或可用的CPU的数量),并开始建立的端口。

在构建过程中的任何时候,你可以通过按住获取有关进展情况CTRL键,打t

CTRL-t

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

如果您需要一步之遥,你可以通过碰撞分离屏幕会话CTRLa移动控制screen ,其次是d键离开会话:

CTRL-a d

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

screen -x

设置Nginx服务前端和存储库

当你的软件包正在构建时,我们可以借此机会配置Nginx。 打开另一个终端,断开你screen ,如上图所示的会话,或者开始一个新的screen键入窗口CTRL-a c (您可以通过键入窗口之间切换CTRL-a nCTRL-a p )。

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

  • 它将提供实际的软件包存储库,其他主机可以使用它下载您的定制编译软件包
  • 它将服务poudriere web前端,可用于监测在生成过程

我们在本指南的开头安装了Nginx,但还没有配置它。

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

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

现在,我们可以调整默认配置文件。 打开它sudo在文本编辑器的权限:

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

在这个文件中,我们将从中删除所有server {}块,并用我们自己的配置替换它。 确保保持匹配的大括号(“{”和“}”)完整,以确保您的文件有效。

在该server情况下,我们可以设置一些基本的指令,让我们的网络服务器,以传统的HTTP流量响应端口80,并为我们的服务器的域名或IP地址响应。 我们还将设置服务器到的文档根poudriere在发现网站目录/usr/local/share/poudriere/html 更改的值server_name如下指令来匹配您的服务器的域名或IP地址:

# http context

. . .

    server {
        listen 80 default;
        server_name server_domain_or_IP;
        root /usr/local/share/poudriere/html;
    }

}

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

虽然基本root ,我们上面定义的指令将处理大部分Web界面,我们需要告诉Nginx的哪个目录我们存储日志和实际的数据。 Poudriere将使用/data端点此。 我们的日志都写入到一个特定的目录,所以我们可以把autoindex指令在此位置,这样我们就可以查看日志列表。

最后,我们的第一个location块将是这样的:

# http context

. . .

    server {
        listen 80 default;
        server_name server_domain_or_IP;
        root /usr/local/share/poudriere/html;

        location /data {
            alias /usr/local/poudriere/data/logs/bulk;
            autoindex on;
        }
    }
}

这应该正确地使我们的网络接口功能(额外的修改后mime.types文件,我们将在稍后做出)。 接下来,我们需要添加第二个位置块,它将用于服务我们一直在构建的实际包。

该软件包将被存放在一个下目录/usr/local/poudriere再次,在这一次data/packages 我们可以可以使这可在/packages的位置。 再次,我们可以开启autoindex ,以查看该目录的内容,使我们能够也在Web浏览器中查看的文件。

一旦这最后修改完成后, server块应该是这样的:

#http context

. . .

    server {
        listen 80 default;
        server_name server_domain_or_IP;
        root /usr/local/share/poudriere/html;

        location /data {
            alias /usr/local/poudriere/data/logs/bulk;
            autoindex on;
        }

        location /packages {
            root /usr/local/poudriere/data;
            autoindex on;
        }
    }
}

保存并在完成后关闭文件。

接下来,我们将做一个小的修改,我们mime.types文件。 使用当前设置,如果您单击Web浏览器中的日志,它将下载文件,而不是以纯文本显示。 我们可以通过改变标志着结尾的文件这种行为.log为纯文本文件。

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

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

查找指定的入口text/plain内容类型和追加log到文件类型的当前列表,用空格分隔的结尾:

. . .

text/mathml                         mml;
text/plain                          txt log;
text/vnd.sun.j2me.app-descriptor    jad;

. . .

保存并在完成后关闭文件。

现在,通过键入以下内容检查配置文件的语法:

sudo service nginx configtest

如果您有任何错误,请在继续之前修复它们。 如果您的配置测试报告没有语法错误,请通过键入以下命令启动Nginx:

sudo service nginx start

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

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

http://server_domain_or_IP

你应该看到主poudriere页:

Poudriere主页

如果您点击进入,您应该能够查看您的港口建设的过程或结果。 您还应该能够点击到已完成的任何构建的日志。

如果你想在浏览器中查看您的编译的软件包,这些应该是可以通过的层级开始/packages

Poudriere包repo

您可能必须等到整个构建完成才能看到包。 通过点击链接将显示你与所产生的编译包poudriere批量生成命令。

配置软件包客户端

现在您已构建了软件包并配置了存储库来提供软件包,您可以将客户端配置为使用服务器作为软件包的源。

配置构建服务器以使用其自己的软件包Repo

我们可以开始配置构建服务器以使用它一直在构建的包。

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

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

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

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

我们将定义库的名称poudriere一次。 在定义内,我们将指向存储软件包的磁盘上的位置。 这应该是一个目录,其中将您的监狱名称和端口树名称与短划线。 检查您的文件系统是否确定。 我们还将通过指向我们创建的证书来设置我们包的签名验证。

最后,你的文件应该看起来像这样:

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

在这一点上,你需要做出决定。 如果你想更倾向于编译的包和回落对FreeBSD的主仓库提供的包,您可以在这里设置一个优先事项,告诉它喜欢包在这个仓库中。 这将使我们的本地存储库优先于官方存储库。

请记住,以这种方式混合包可能会有一些复杂的后果。 如果官方源有一个比你的本地库版本更高软件包版本,你编译包可能通过从官方仓库通用所替代(直到你与重建poudriere和重新安装pkg )。 此外,官方包可能假定依赖包是以某种方式构建的,并且在与您的自定义包混合时可能无法正常工作。

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

混合包,添加一个priority设置将存储库定义,指定本地回购具有更高的优先级:

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

保存并在完成后关闭文件。

如果您选择安装您已经定制自己(更安全的路线)的包,你可以离开了优先级设置,但你会希望禁用默认的库。 您可以通过创建覆盖默认存储库文件并禁用它的不同存储库文件来执行此操作:

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

在内部,使用名称FreeBSD以默认的库定义相匹配。 通过如下定义来禁用存储库:

FreeBSD: {
    enabled: no
}

保存并在完成后关闭文件。

无论您的配置选择,您现在应该可以使用您的存储库。 键入以下内容更新包列表:

sudo pkg update

现在,您的服务器可以使用pkg命令从本地仓库安装软件包。

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

其中最令人信服的理由成立poudriere在构建机上是使用主机作为仓库的许多其他机器。 我们需要做的工作是从我们的构建机器下载公共SSL证书并设置类似的存储库定义。

为了连接到我们从我们的客户机主机构建,你应该开始你的本地计算机上的SSH代理存储您的SSH密钥的凭据。

OpenSSL附带了一个SSH代理,可以通过在家庭计算机上键入该代理来启动:

eval $(ssh-agent)

接下来,您需要通过键入以下内容将SSH密钥添加到其中:

ssh-add

之后,当您使用连接,您可以把您的本地SSH凭据客户端计算机-A标志。 这将允许您从客户端计算机访问任何计算机,就像从家庭计算机访问它一样:

ssh -A freebsd@client_domain_or_IP

一旦您在远程客户端机器上,第一步是创建目录结构(如果它不存在),以便您存储证书。 我们将继续为键创建一个目录,以便我们可以将其用于未来的任务:

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

现在我们可以使用SSH连接到我们的构建计算机,并将证书文件管理回我们的客户端计算机。 由于我们转发了SSH凭据,因此我们应该能够在不提示输入密码的情况下执行此操作:

ssh 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组合将证书写入到我们的目录。

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

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

现在,我们可以创建一个与我们在构建机器上使用的存储库文件非常相似的存储库文件:

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

不同之处在于URL位置和镜像类型。 同样,我们可以选择混合包或使用我们的自定义编译包。 关于混合包装源,相同的警告。

如果你想混合你的自定义包和官方的仓库,你的文件应该看起来像这样:

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

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

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

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

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

在文件中放置以下内容以禁用官方存储库:

FreeBSD: {
    enabled: no
}

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

sudo pkg update

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

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

你现在应该有你的整个poudriere设定运行。 但是,当有新的更新可用时,尤其是与安全性相关的时候,您将需要不时地重新构建您的包。

幸运的是,重建软件包的过程是相当简单的。 首先,您应该更新您的FreeBSD监狱,以便根据最新的操作系统构建您的包。 你可以通过键入:

sudo poudriere jail -u -j freebsd_10-1x64

接下来,您应该更新您的ports树,以便每个端口的最新版本可用于您的监狱。 你可以通过键入:

sudo poudriere ports -u -p HEAD

jail和ports树更新后,如果您要进行任何更改,您可以修改端口列表:

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

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

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

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

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

如果你想,而不是审查所有为您的端口选项,您可以添加-c标志。 在解决构建或运行时问题时,这可能很有帮助:

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

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

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

随意监控Web界面的进度。 一旦新包被编译,您可以通过键入以下内容在每台机器上更新包:

sudo pkg upgrade

这将允许您更新您的整个FreeBSD基础设施上的自定义包很容易。

结论

在本指南中,我们讨论了如何配置poudriere编译和打包为我们的构建机器和外部客户端口的自定义设置。 这个过程看起来可能很长,但是一旦你开始运行,它就很容易管理。

通过利用poudriere ,你可以采取两种FreeBSD的可选软件管理系统的优势。 对于许多用户来说,这是两个世界中最好的。 一个poudriere构建系统,您可以作为您在使用快看适合在一台机器上的定制软件pkg系统实际安装和管理。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏