FreeBSD中安装使用poudriere简易教程

1 poudriere是什么?
poudriere这个单词一看就知道是个法语单词,而且应该是个偏僻少用的法语单词,作为FreeBSD的一个重要工具,官方主页是这样介绍的:
“poudriere is a BSD-2 licensed tool primarily designed to test package production on FreeBSD. However, most people will find it useful to bulk build ports for FreeBSD.”
简单来说,poudriere是个测试FreeBSD ports的重要工具,对ports没兴趣的同学基本可以绕行了。

poudriere可以做两件事情:
1) 帮助测试ports.
不要poudriere我就不能测试ports了么?当然不是,但是poudriere能够更好地测试,比如我的机器是FreeBSD-10.1,那么通过poudriere我可以测试FreeBSD9和FreeBSD11中的ports编译情况;可以在amd64系统中测试i386架构的编译情况;可以找出PLIST的错误,你在单机FreeBSD系统中安装ports的时候,你把pkg-plist中删除几行,安装的时候是不会出错的….
2) 构建二进制包,以便重复使用。
这个应该对网管很有用吧,我不熟悉。

由于poudriere安装、配置和使用相比于之前的Tinderbox简便地多,而且对pkgng支持更好,所以现在的ports开发人员都基本抛弃Tinderbox而投入到poudriere阵营。

2 安装poudriere
安装非常简单:
# /usr/ports/ports-mgmt/poudriere
# make install clean

安装后先复制再编辑配置文件:
#cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
#vi /usr/local/etc/poudriere.conf
这个配置文件基本不需要修改旧可以工作,我只改了2个地方:
一是注意根据自己的文件系统是否是ZFS做出正确的设置,如果是ZFS则要设置ZPOOL参数,不是的话要把NO_ZFS=yes前面的注释符号删除。
二是设置FREEBSD_HOST参数,我这里ftp://ftp.tw.freebsd.org比较快。

3 使用poudriere
要开始使用poudriere,还需要以下几个步骤:
1)创建poudriere的ports系统
可以使用poudriere ports -c创建,但是我喜欢使用系统本身的ports系统:
# poudriere ports -c -F -f none -M /usr/ports -p wen
这个命令的意思是使用系统本身的/usr/ports作为poudriere的ports,且命名为wen,如果系统早有安装ports,那么这个步骤不费时间。
之后可以用poudriere ports -l查看相关情况。这里顺便赞一下poudriere的命令的联机帮助写得很好,任何命令不清楚只要不加参数运行都会完整地显示相关说明,比如你运行poudriere ports它就会把所有相关参数列举出来。
2)创建jails
# poudriere jail -c -j 93i386 -v 9.3-RELEASE -a i386
其中每个参数意义都很明显,-c是创建,-j是创建的jail名字,-v是版本,可以使用stable和head版本,-a是架构。
为了测试的需要你肯定需要创建多个jails,对当前的开发人员来说,我想至少三个吧,9、10和head各一个。
之后可以修改每个jail的配置文件,至少告诉系统使用新的pkgng系统:
# mkdir /usr/local/etc/poudriere.d
# echo “WITH_PKGNG=yes” > /usr/local/etc/poudriere.d/93i386-make.conf
当然你也可以想修改系统make.conf文件,定义一些其他自己的参数,如强制使用perl-5.20版本或者强制使用python3之类的,具体的写法请参照/etc/make.conf的格式。
3)开始测试或者编译需要的ports
这里又分两种情况,
第一种情况是面向ports测试的,相应的检测更加完全,比如:
# poudriere testport -j 93i386 -p wen -o www/moodle27
这里同样参数的意义很显然,-j后面是你需要在哪个jails中测试;-p后面跟的是ports的名字,我们一般就只有一个ports,牛人们可能有几个;-o后面就是你要测试的ports的名字。
第二种情况是使用poudriere bulk构建相应的二进制报以便重复使用,通常一次编译多个ports包,而我们先把这些包的名字写在一个文件中:
# vi ~/wen1.txt  (每行写一个ports的名字,带catergory,如www/moodle27)
# poudriere bulk -f ~/mylist -j 93i386
经过一段时间的等待,可以在/usr/local/poudriere/data/packages/93i386-wen/All目录中找到编译好的二进制包。

4 从网页中查看poudriere的编译log
肯定要经常查看编译log,尤其是出错的情况下,一般我是通过网页来更方便地查看,首先安装好apache,修改配置文件:
/usr/local/etc/apache24/httpd.conf
在其中加入以下语句:
Alias /poudriere /usr/local/poudriere/data/logs/bulk
AcceptPathInfo On
<Directory /usr/local/poudriere/data/logs/bulk>
Options Indexes
AllowOverride None
Require all granted
</Directory>
现在可以在浏览器中输入http://your_server_ip/poudriere查看编译的log了。

更为详细的信息请参阅:https://fossil.etoilebsd.net/poudriere/doc/trunk/doc/index.wiki

转自:http://bbs.chinaunix.net/thread-4160862-1-1.html

此条目发表在BSD分类目录,贴了, , 标签。将固定链接加入收藏夹。