首页 > 教程 > FreeBSD 教程 > 安装软件 > FreeBSD 使用 poudriere 构建软件包

FreeBSD 使用 poudriere 构建软件包

poudriere 是一款在 FreeBSD 系统中构建和测试软件包的工具,它能够在 FreeBSD Jail 虚拟环境中构建软件包。构建后的软件包目录结构与官方镜像一致,可直接使用 pkg 等命令安装。

安装与配置 poudriere

安装 poudriere

使用 pkg 安装

推荐使用 pkg 安装 poudriere:

pkg install poudriere

使用 ports 安装

1)转到 poudriere 的 Port 目录:

cd /usr/ports/ports-mgmt/poudriere

2)编译安装 poudriere 并清除临时文件

make install clean

初始化配置

安装后会自动生成一个示例配置文件,把该文件复制为配置文件即可:

cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf

配置参数说明

如下给出在文件 poudriere.conf 中一些常用参数的解释说明:

参数名 作用说明
ZPOOL 指定 ZFS 存储池
FREEBSD_HOST 设置 FreeBSD 镜像源,可以使用国内镜像源,加快下载速度,如:FREEBSD_HOST=ftp://ftp.freebsd.org
CCACHE_DIR 启用 devel/ccache 编译缓存,需要先安装 ccache 软件包,可以减少重复编译的时间,如:CCACHE_DIR=/var/cache/ccache
POUDRIERE_DATA 自定义数据存储目录,如:POUDRIERE_DATA=/poudriere

初始化 Jail 和 Ports 树

在配置好 poudriere 后需要先创建一个 Jail 虚拟系统,并加载 Ports 树,才能构建软件包。

常用的概念说明:

  • Jail:FreeBSD 系统下的虚拟环境,其为一个隔离的 FreeBSD 系统
  • Ports 树:存储软件包编译脚本的目录
  • Set:自定义配置的集合,可以为不同的编译场景定义不同的配置

初始化 Jail

使用 poudriere jail -c 命令创建 Jail 虚拟系统,在该环境中编译软件,常用的选项有:

  • -j <jail名称> 指定 Jail 的名称
  • -v <版本>:指定 FreeBSD 的版本
  • -a <架构>:指定架构,如 amd64 / i386,默认与主机的架构一致

如创建一个 FreeBSD 15.0-RELEASE amd64 架构的 Jail:

poudriere jail -c -j 15amd64 -v 15.0-RELEASE

初始化 Ports 树

使用 poudriere ports -c 命令创建 Ports 树,常用的选项有:

  • -p <ports名称>:指定 Ports 树名称
  • -m <类型>:指定 Ports 树源的类型,支持 gitsvnhttp

如通过 Git 获取官方 Ports 树:

poudriere ports -c -p local -m git+https

构建软件包

自定义编译配置

/usr/local/etc/poudriere.d/ 目录下创建自定义 make.conf,文件名格式为: {Jail名称}-{Ports树名称}-{Set名称}-make.conf

如配置文件 /usr/local/etc/poudriere.d/15amd64-local-workstation-make.conf

定义待构建软件包列表(pkglist)

创建软件包列表文件 pkglist,内容为每行一个 Ports 源(支持 FLAVOR 后缀,如 @php82),文件名的格式为 {Jail名称}-{Ports树名称}-{Set名称}-pkglist

如创建工作站常用软件包列表:

vi /usr/local/etc/poudriere.d/15amd64-local-workstation-pkglist

可以添加如下的内容:

editors/emacs          # 文本编辑器
devel/git              # 版本控制工具
devel/php-composer2@php82  # PHP 依赖管理工具指定 PHP 8.2 版本

配置 Ports 编译选项

使用以下命令为指定软件包配置编译选项:

poudriere options -j 15amd64 -p local -z workstation -f 15amd64-local-workstation-pkglist

参数说明:

  • -z <Set名称>:指定自定义配置集
  • -f <pkglist文件>:指定待配置的软件包列表

批量构建软件包

使用 poudriere bulk 命令启动程序,会同时构建指定的软件包及其依赖的软件包:

poudriere bulk -j 13amd64 -p local -z workstation -f 13amd64-local-workstation-pkglist

配置 pkg 使用自定义仓库

禁用官方仓库

若要使用自己构建的软件仓库,可禁用官方仓库。

vi /usr/local/etc/pkg/repos/FreeBSD.conf

添加以下内容:

FreeBSD-ports: {
    enabled: no
}

配置自定义仓库

若只是在本地主机当中使用自定义构建的软件包仓库,可以直接指定文件的路径:

vi /usr/local/etc/pkg/repos/custom.conf

添加以下内容:

custom: {
    url: "file:///poudriere/data/packages/15amd64-workstation",  # 替换为实际软件包目录
    enabled: yes
}