5

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

4

3 回答 3

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。

在第一步之后,改变你的路径可能会有所帮助,这样你就不会意外地对你正在使用的 Perl 版本感到困惑:

export PATH=/usr/local/perl/5.10.0/bin:$PATH
于 2008-09-17T13:19:37.720 回答
1

你会想看看mod_so

于 2008-09-17T03:36:07.997 回答
1

我以前做过。它不是很漂亮,但它确实有效,特别是因为供应商 perl 通常有 2-3 年的历史。

我开始制作自己的 perl RPM,将 perl 安装到不同的位置,例如/opt/. 这很简单。我主要是从这个开始的,因为我不希望使用 perl 的系统实用程序在我升级/安装新模块时中断。我不得不修改我的所有脚本以#!/opt/bin/perl在顶部指定,有时我什至使用路径来确保我的 perl 排在第一位。

接下来,我抓取了一个 mod_perl 源 RPM 并将其修改为使用 my/opt/bin/perl而不是/usr/bin/perl. 我无法访问我所做的更改,因为它是在不同的演出中。我花了一点时间才得到它。

它确实有效,但我不是 RPM 向导,所以依赖性检查效果不佳。例如,我可以卸载我的自定义 RPM 并破坏一切。这对我来说没什么大不了的,所以我继续前进。

我还将 RPM 与模块的 CPAN 安装混合在一起(我有没有提到我们用自己的代码构建了自己的自定义 CPAN 镜像?)。这也有点脆弱。同样,我没有资源(即时间)来弄清楚如何弯曲cpan2rpm以使用我的 perl 而不会导致 RPM 冲突。

如果我要重新做一遍,我会制作一个自定义的 5.10 perl RPM,然后替换系统 perl。然后我将使用cpan2rpm创建我的软件所需的 RPM 包并编译我自己的 mod_perl RPM。

于 2008-09-17T04:34:33.957 回答