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 树源的类型,支持git、svn、http等
如通过 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
}