16

我一直在使用perlbrew在 Linux Fedora 笔记本上管理多个版本的 perl。我使用它来运行命令行脚本非常有用,主要使用App::cmd

我现在想使用安装在我的$HOME. 我熟悉$HOME使用 Apache 或创建虚拟主机在 s 中运行 Perl Web 应用程序,user_dir但我无法想出一种干净的方式来集成它和 perlbrew 管理的 perls。具体来说,我需要帮助来理解和寻找这些问题的答案:

  1. perlbrew下如何安装mod_perl?
  2. 假设这已经完成,我该如何配置我的 VirtualHost 以便它选择正确的当前 perl?
  3. 如果这是不可能的,(我怀疑)我至少可以使用本地安装来运行 vanilla CGI吗?

感谢您的关注。

4

2 回答 2

17

我不认为这对 perlbrew 来说是一个很好的用途,它在自己的目录下移动符号链接。诀窍是切换 mod_perl 模块。请记住,mod_perl 在 perl 的主要版本之间将是二进制不兼容的,并且您必须针对要使用的每个版本的 perl(和 apache)针对 apache 编译它。

perlbrew 确实为您做了两件大事:

  • 安装 perl,这很容易自己完成。
  • 切换符号链接,所以perl是你想要的任何版本。

如果你放弃最后一个,perlbrew 并没有真正为你做那么多。我不认为符号链接功能特别有价值。

我认为 perlbrew 本身就很好,但是当你开始做超出其有限范围的事情时,是时候不使用它了。它应该是一种可以节省您一些时间和头痛的工具,因此,如果它没有实现该目标,那么它就不是适合您情况的工具。

在这种情况下,我支持单个大型 Web 应用程序,我给它自己的 perl 安装,我不让其他任何东西使用。

对于您的其他问题:

  1. 降价占位符

  2. 你不应该配置任何VirtualHost东西。如果您使用的是 mod_perl,则 perl 已经存在,您无需选择 perl。如果你使用 CGI 东西,你在 shebang 行上指定 perl。您必须确保 apache 选择正确的库目录,但我认为 perlbrew 可以处理。您可能必须SetEnv在 httpd.conf 中使用或类似的东西。

  3. 对于 vanilla CGI,只要指向正确的(符号链接)路径即可获得默认的 perlbrew 版本。CGI 程序将只使用该路径指向的任何 perl。

于 2010-09-25T20:11:43.283 回答
9

请参阅 brian d foy 的回答,了解为什么不期望使用 perlbrew 在 mod_perl 版本之间切换。如果您在 mod_perl 下需要多个不同的 Perl 版本,我还希望您需要运行多个 Apache 服务器。

但是,使用 perlbrew 作为构建 Perl 的简单方法是恕我直言,这是一件有效的事情,并且很少有关于如何在 perlbrew 下运行 mod_perl 的说明。

首先通过传递 -Duseshrplib 标志来确保 perl 是使用共享库支持构建的(否则在 64 位系统上,您将获得关于 -fPIC 的令人困惑的构建失败):

perlbrew install perl-5.16.3 -Duseshrplib

为您的系统安装开发 Apache 库。在 Debian 上,这取决于您使用的 Apache MPM。对于前叉 MPM:

sudo apt-get install apache2-prefork-dev

或者对于工人 MPM:

sudo apt-get install apache2-threaded-dev

然后你需要一些选项来构建和安装 mod_perl2 到正确的位置。请注意,这意味着 cpanm 将无法构建它,但您可以使用它来获取源代码:

cpanm mod_perl2  # fails
cd ~/.cpanm/latest-build/mod_perl-2.0.8/   # adjust mod_perl version

相应地调整下面的 Perl 版本。(MP_APXS 选项是为基于 Debian 的系统提供正确的路径,您可能不需要。)

perl Makefile.PL MP_APXS=/usr/bin/apxs2 \
                 MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/
make
make install

最后,更改 Apache 配置文件中的 LoadModule 行(相应地调整路径):

LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so

您的 mod_perl 安装现在将运行您想要的 Perl 版本。安装所有需要的 CPAN 模块并开始工作。

于 2013-05-31T15:45:33.910 回答