用Poudriere建立自己的Pkg存储库

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

从9.2版开始,FreeBSD引入了一个新工具来替换旧的pkg _ *-命令- pkg也称为 pkgng。这与Debian的非常相似 apt 或Fedora的 yum 但具有一些非常酷的功能。其中之一是可以轻松使用您自己的私有软件包存储库。

你为什么想这么做?官方的pkg存储库是基于FreeBSD的ports树构建的,只有很少的选项集。例如,PHP的官方软件包缺少对MySQL的支持。另一个原因可能是您想要拥有两个存储库,一个用于桌面的X11启用-用于服务器的X11的禁用。有很多选择和可能性,本教程将向您展示如何使用以下方法构建自己的存储库 Poudriere,是用于批量包装的工具。

我假设您已经安装了FreeBSD 10 x64的新VPS。首先,您需要系统上的端口树:

cd /usr
portsnap fetch extract

然后,您需要从源代码安装Poudriere(默认选项很好!):

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

接下来,创建一个基本配置文件:

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

…并根据您的需要进行编辑。以下是一个好的开始:

FREEBSD_HOST=http://ftp.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=$/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
CHECK_CHANGED_DEPS=yes
# Edit this according to your VPS' CPU.
PARALLEL_JOBS=1
NOLINUX=yes

Poudriere不是使用系统的常规porttree,而是使用其自己的副本。您必须使用以下命令获取它:

poudriere ports -c

现在,为构建器在其中运行创建一个监狱:

poudriere jail -c -j testjail -v 10.0-RELEASE -a amd64

在开始构建软件包之前,您实际上必须告诉Poudriere 什么 它应该建立。打开您喜欢的文本编辑器并添加一些软件包:

www/firefox
im/pidgin
sysutils/tmux
editors/vim

…并将文件保存在 /usr/local/etc/buildlist。如果不想使用默认选项,则可以为该文件中的每个软件包配置选项。通过发出以下命令来完成此操作:

poudriere options -cf /usr/local/etc/buildlist

否则,您可以开始构建:

poudriere bulk -f /usr/local/etc/buildlist -j testjail

此操作所花费的时间将根据VPS的CPU速度而变化。完成此过程后,可以在以下位置找到您的新软件包,并按build-jail进行排序 /usr/local/poudriere/data/packages/

现在,您需要一个Web服务器才能将这些软件包实际提供给其他计算机。我选择Nginx是因为它高效且轻巧。通过端口安装(默认选项很好!):

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

安装过程完成后,您需要配置Nginx来提供程序包目录。为此,请编辑 /usr/local/etc/nginx/nginx.conf 使用您最喜欢的文本编辑器:

server {
    listen       80;
    server_name  localhost;
    root /usr/local/poudriere/data/packages/testjail-default;
    location / {
            autoindex on;
    }
}

最后,确保Web服务器在启动时启动:

echo "nginx_enable=YES" >> /etc/rc.conf

…并启动服务器:

/usr/local/etc/rc.d/nginx start

Poudriere的可能性很大。您可以通过阅读手册页条目来了解有关Poudriere的更多信息。如果您打算在生产环境中使用这样的设置,则最好阅读一下软件包签名,并考虑使用TLS保护与Web服务器的连接,这是您的最大利益。但是现在,您已经准备好摇滚!

要在客户端上激活存储库,请在客户端计算机上运行以下命令:

mkdir -p /usr/local/etc/repos
vi /usr/local/etc/repos/myrepo.conf

填充 myrepo.conf 具有以下内容。您可以为此文件使用任何名称,只要它具有 .conf 后缀。

poudriere: {
  url: "http://yoururl"
  mirror_type: "http",
  enabled: yes
}

接下来,使用以下命令更新软件包数据库:

pkg update

您现在可以从新存储库中安装软件包了!

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com