请参阅 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 模块并开始工作。