是否可以在一台机器上运行多个Perl安装(在"容器"中)?
原因是我有不同的基于Perl的服务器端Web应用程序,并希望独立安排更新.
例如,bugzilla升级在我看来非常具有侵略性,下载所有方式或模块更新也很冗长(从而增加了在升级仍然是部分的时候依赖于那些模块的其他应用程序上出现不可预测行为的可能性) .
我认为应该可以在一台服务器上运行多个独立的服务器端CGI Perl应用程序,我宁愿不被告知将它们分成不同的机器 - 我认为这很浪费,而且我还没有那个资源.
安装和管理多个perls很容易.只需将它们安装在不同的地方,并使用每个perl的工具.我在The Effective Perler中谈到这一点.
有些人建议perlbrew没有意识到它并没有真正给你任何好处.它可以下载perl,配置和安装它,并切换符号链接,使其中一个默认.但它并没有做任何神奇的事情.
下载和安装不是问题.你从来没有需要root或sudo这样做,如果你这样做,你仍然需要perlbrew.您始终可以安装到您拥有权限的任何目录中.perlbrew完全没有解决这个问题.在源目录中,您有两个简单的命令要运行:
$./Configure -des -Dprefix=/where/you/want/to/install
$ make install
Run Code Online (Sandbox Code Playgroud)
对你来说,这可能意味着Bugzilla得到了自己的perl:
$./Configure -des -Dprefix=/where/you/want/to/install/bugzilla-perl
$ make install
Run Code Online (Sandbox Code Playgroud)
从那里,你有一个完全独立的perl安装.当我对我使用的perl很重要时,我给程序提供了完整的路径:
#!/where/you/want/to/install/bugzilla-perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
在没有perlbrew的情况下制作这些每个应用程序的安装要容易得多,因为perlbrew希望尽可能多地为你做,包括决定目录名称,它根本就不是你想知道的.
perlbrew的主要优点不是编译和安装,而是switch让你使用perl作为默认值.您可能不希望使用该功能,因为您只需要使用您希望它们使用的perl的bugzilla,CGI程序等,而不是您最后指定的默认perl.
当你想要更新bugzilla-perl时,只需使用它已经调整了shebang行的工具来找到合适的perl:
$ /where/you/want/to/install/bugzilla-perl/bin/cpan ...
Run Code Online (Sandbox Code Playgroud)
但是,我并不喜欢所有这些漫长的道路,这就是为什么我要将它们全部链接起来的原因.然后我可以用我决定的任何命名方案来调用它们,这可能是:
$ bugzilla-cpan ...
Run Code Online (Sandbox Code Playgroud)
关于我正在使用哪种工具或版本,从来没有一个问题.