如何使用自编译的Perl和mod_perl的供应商Apache?

时间:2008-09-17 02:59:28

标签: perl apache mod-perl

我想使用Apple或RedHat的内置Apache,但我想使用Perl 5.10和mod_perl。什么是最不干扰的方式来实现这一目标?我希望为供应商的Apache,dav,php等提供免费安全补丁的优势,但我非常关心我使用的Perl版本以及@INC路径中的内容。我不介意编译自己的mod_perl。

3 个答案:

答案 0 :(得分:5)

  1. 按照mod_perl文档中的任何特殊说明构建您的Perl 5.10版本。告诉Perl配置器安装在一些非标准的地方,比如/usr/local/perl/5.10.0

  2. 使用说明针对您的发行版的Apache构建共享库(或动态或.so)mod_perl,但请确保使用您的版本的perl运行Makefile.PL:

    /usr/local/perl/5.10.0/bin/perl Makefile.PL APXS = / usr / bin / apxs

  3. 像普通一样安装和配置mod_perl。

  4. 在第一步之后,改变您的路径可能会有所帮助,因此您不会在意外地对您正在使用的Perl版本感到困惑:

    export PATH=/usr/local/perl/5.10.0/bin:$PATH
    

答案 1 :(得分:1)

您需要查看mod_so

答案 2 :(得分:1)

我以前做过这个。它不漂亮,但它起作用,特别是因为供应商perl通常是2 - 3年。

我开始创建自己的perl RPM,将perl安装到不同的位置,例如/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。