我正在尝试创建 Apache 及其依赖项的包:
sudo make package-recursive \
__MAKE_CONF=~/make.apache22.conf \
PKGREPSOITORY=/usr/home/gvkv
一切正常; Apache 及其依赖项编译并安装并apache22.tbz
位于gvkv
.问题是依赖包都建在各自的ports/<package>
目录下!它们大约有十五个,虽然使用一行代码很容易检索它们find
,perl
但肯定有一种方法可以告诉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