我正在尝试从端口配置Apache 2.2(在FreeBSD中)。我用我想要的编译选项编写了我自己的makefile,据我所知,一切似乎都要检查出来。即:
make -V <env_var> __MAKE_CONF=~/mk/make.apache22.conf
除了PERL5
和USE_PERL5
之外,会返回我的预期。我已尝试在make.apache22.conf
中设置两个变量,并在每个组合中设置环境:
export PERL5=/usr/local/bin/perl
export USE_PERL5=5.12+
然而
make -e -V USE_PERL5 -V PERL5
返回
yes
/usr/local/bin/perl5.10.1
(我也试过覆盖-E
。)另一件事是我只安装了Perl 5.12.1,所以版本显然来自Perl端口和/或{{1}但是,我正在研究bsd.perl.mk
和bsd.perl.mk
实用程序本身,我不明白为什么我的方法不起作用。
我错过了什么?
答案 0 :(得分:1)
因此,简而言之,答案就在于ports系统。来自/usr/ports/Mk/bsd.port.mk
:
Note: the distinction between the USE_* and WANT_* variables, and the
WITH_* and WITHOUT_* variables, are that the former are restricted to
usage inside the ports framework, and the latter are reserved for user-
settable options. (Setting USE_* in /etc/make.conf is always wrong).
通常,从端口安装时,Makefile
将递归地包含一些文件链,这些文件在某些时候会引入:
/usr/ports/Mk/bsd.perl.mk
此文件评估定义端口USE_PERL*
的所有PERL*
和Makefile
变量。特别是,bsd.perl.mk
对所需的Perl版本进行硬编码,如果它不在系统上,则会安装Perl端口。
ports系统非常酷,但我发现这种情况令人沮丧,因为似乎没有任何直接的方法来配置端口来构建和/或使用预先存在的软件运行。
更新2010年8月8日:
底线是您使用端口还是不使用端口。如果不这样做,您必须自己手动配置和跟踪所有内容,但您也可以获得最新的(希望)最好的。 ports系统很好,特别是因为每个端口都可以根据需要进行配置,并且您可以轻松升级和打包管理。 (比如说,让自定义编译的软件包安装到jails中 - 特别是使用像ezjail这样的工具。)缺点是有时你需要等一下才能将端口更新到最新版本。这对于普通软件来说并不是什么大不了的事,但是你可能会等待一段时间以获得更加模糊的项目。
最终,这里的解决方案是安装Perl 5.12端口并从那里开始。