如何使用带有自编译的Perl和mod_perl的供应商Apache?
我想使用Apple或者RedHat的内置Apache,但我想使用Perl 5.10和mod_perl。实现这一目标的最不干扰方式是什么?我想要为供应商的Apache,dav,php等提供免费安全补丁的优势,但是我非常关心我使用的Perl版本以及@INC路径中的内容。我不介意编译自己的mod_perl。
解决方案
回答
我们将要研究mod_so
回答
我以前做过它虽然不漂亮,但是可以用,特别是因为卖方perl通常是2到3年的历史。
我首先制作了自己的Perl RPM,将RPM安装到其他位置,如/ opt /
。这很简单。我主要从此开始,因为我不希望在升级/安装新模块时使用perl的系统实用程序中断。我不得不修改所有脚本以在顶部指定## / opt / bin / perl,有时甚至还要尝试确保Perl首先出现的路径。
接下来,我获取了一个mod_perl源RPM并将其修改为使用我的/ opt / bin / perl
而不是/ usr / bin / perl
。我无法进行所做的更改,因为它是在其他演出中进行的。我花了一些时间来获得它。
它确实有效,但是我不是RPM向导,因此依赖项检查效果不佳。例如,我可以卸载自定义RPM并破坏所有内容。对我来说这没什么大不了的,所以我继续前进。
我还在将RPM与模块的CPAN安装混合在一起(我是否提到我们用自己的代码构建了自己的自定义CPAN镜像?)。这也有点脆弱。同样,我没有资源(例如时间)来弄清楚如何弯曲cpan2rpm以使用我的perl而不引起RPM冲突。
如果要再次执行所有操作,则将创建自定义的5.10 perl RPM,而只需替换系统perl。然后,我将使用cpan2rpm
创建软件所需的RPM软件包,并编译自己的mod_perl RPM。
回答
- 按照mod_perl文档中的任何特殊说明,构建Perl 5.10版本。告诉Perl配置器将其安装在一些非标准位置,例如/usr/local/perl/5.10.0
- 使用说明针对发行版的Apache构建共享库(或者动态库,或者.so库)mod_perl,但请确保使用perl版本运行Makefile.PL:/usr/local/perl/5.10.0/bin/ perl Makefile.PL APXS = / usr / bin / apxs
- 像通常一样安装和配置mod_perl。
在第一步之后,更改路径可能会有所帮助,这样我们就不会意外对正在使用哪个版本的Perl感到困惑:
export PATH=/usr/local/perl/5.10.0/bin:$PATH