在 FreeBSD 中调用 make package-recursive 时如何递归应用 PKGREPOSITORY?

在 FreeBSD 中调用 make package-recursive 时如何递归应用 PKGREPOSITORY?

我正在尝试创建 Apache 及其依赖项的包:

sudo make package-recursive \
__MAKE_CONF=~/make.apache22.conf \
PKGREPSOITORY=/usr/home/gvkv

一切正常; Apache 及其依赖项编译并安装并apache22.tbz位于gvkv.问题是依赖包都建在各自的ports/<package>目录下!它们大约有十五个,虽然使用一行代码很容易检索它们findperl但肯定有一种方法可以告诉make在一个环境中运行,使得依赖包最终以gvkv.

答案1

使用 FreeBSD 的部分乐趣在于处理 ports 子系统。它在很多方面都很好——在 FreeBSD 生态系统中易于安装和升级,但在其他方面却很差——通过make配置文件或环境设置变量不能按预期工作,甚至不能像宣传的那样工作。

尽管如此,戴斯爵士用一个巧妙的小技巧来救援:

mount -t nullfs /directory/for/pkgs /usr/ports/packages

这真的很酷,因为它绕过了环境变量的使用,并且您可以将目标目录设置为您想要的任何位置。如果您(像我一样)使用“构建监狱”来制作安装在不同系统或其他监狱上的软件包,这将非常有帮助。

/usr/ports/packages目录是PACKAGES指向的位置(如果存在),据说它能够指向其他地方,但对我不起作用。该man页面规定的设置PKGREPOSITORY仅在您构建单个包时才有效。

答案2

我读到 PKGREPOSITORY 依赖于 PACKAGES。

您可以在 中设置 PACKAGES /etc/make.conf。例如:

DISTDIR= /opt/portbuild/distfiles
PACKAGES=/opt/portbuild/packages

相关内容