为什么我不能在FreeBSD的apache端口中覆盖make的环境变量?

时间:2010-08-05 00:23:15

标签: apache configuration makefile freebsd

我正在尝试从端口配置Apache 2.2(在FreeBSD中)。我用我想要的编译选项编写了我自己的makefile,据我所知,一切似乎都要检查出来。即:

make -V <env_var> __MAKE_CONF=~/mk/make.apache22.conf
除了PERL5USE_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.mkbsd.perl.mk实用程序本身,我不明白为什么我的方法不起作用。

我错过了什么?

1 个答案:

答案 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端口并从那里开始。