如何为不同的Perl应用程序安装专用环境?

abb*_*bot 21 python perl virtualenv

是否有与Python的virtualenv相同或接近的功能,但对于Perl?

我已经在Python中做了一些开发,并且可以在一个单独的环境中安装非系统版本的模块,而不会产生任何混乱,这是一个巨大的优势.现在我必须在Perl中开发一个新项目,我正在寻找像virtualenv这样的东西,但对于Perl来说.你能否建议任何Perl等价物或替换python的virtualenv?

我正在尝试为要部署的Y个不同应用程序设置X个不同的非系统Perl包.更糟糕的是,这些应用程序可能需要相同软件包的不同版本,因此每个应用程序可能需要安装在单独的模块/库环境中.对于X <Y <3,您可能需要手动执行此操作.但是,对于10> Y> X,不应手动执行此操作.

理想情况下,我正在寻找的应该是这样的:

perl virtualenv.pl my_environment
. my_environment/bin/activate
wget http://.../foo-0.1.tar.gz
tar -xzf foo-0.1.tar.gz ; cd foo-0.1
perl Makefile.pl
make install # <-- package foo-0.1 gets installed inside my_environment
perl -MCPAN -e 'install Bar' # <-- now package Bar with all its deps gets installed inside my_environment
Run Code Online (Sandbox Code Playgroud)

hob*_*bbs 21

有一个工具称为local::lib包装所有工作,就像virtualenv.它会:

  • @INC在使用它的过程中设置.
  • PERL5LIB为子进程设置和其他类似的东西.
  • 设置正确的变量来说服CPAN, MakeMaker,Module::Build等库文件和存储配置在本地目录.
  • 设置PATH为可以找到已安装的二进制文件.
  • 从命令行使用时,这样就可以把打印环境变量到stdout eval $(perl -Mlocal::lib).profile,然后大多是忘掉它.