【发布时间】:2010-09-09 22:03:42
【问题描述】:
我想使用 Apple 或 RedHat 的内置 Apache,但我想使用 Perl 5.10 和 mod_perl。实现这一目标的最少侵入方式是什么?我想要为供应商的 Apache、dav、php 等提供免费安全补丁的优势,但我非常关心我使用的 Perl 版本以及我的 @INC 路径中的内容。我不介意自己编译 mod_perl。
【问题讨论】:
我想使用 Apple 或 RedHat 的内置 Apache,但我想使用 Perl 5.10 和 mod_perl。实现这一目标的最少侵入方式是什么?我想要为供应商的 Apache、dav、php 等提供免费安全补丁的优势,但我非常关心我使用的 Perl 版本以及我的 @INC 路径中的内容。我不介意自己编译 mod_perl。
【问题讨论】:
按照 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
【讨论】:
你会想看看mod_so
【讨论】:
我以前做过。它不是很漂亮,但它很有效,尤其是因为供应商 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。
【讨论】: