Perl 虚拟环境?

Perl 虚拟环境?

背景(非必读)

我以网络开发实习生的身份开始了目前的工作。教我的那个人中途离开了,我基本上陷入了困境,只能靠谷歌的桨来维持,因为几乎没有关于如何运行任何服务器的文档。我现在主要不是开发,而是维护服务器上的软件,包括公司内联网。

情况

我习惯使用 Python,但我们目前有一个开发内部网,它已关闭,并且似乎运行在 Perl 脚本上,或者至少是由 Perl 脚本启动的。该服务器运行的是 Solaris 10。

我试图运行一个 .pl 文件,但系统抱怨找不到LWP/Simple.pm

LWP/Simple.pm存在,但是它属于不同的 Perl 版本。

perl/lib/site_perl/5.6.1/LWP/Simple.pm

但现在的版本是:

@INC

/usr/perl5/5.8.4/lib/sun4-solaris-64int
/usr/perl5/5.8.4/lib
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int
/usr/perl5/site_perl/5.8.4
/usr/perl5/site_perl
/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int
/usr/perl5/vendor_perl/5.8.4
/usr/perl5/vendor_perl

bash-3.00# perl -V

我的perl5总结(修订版5版本8颠覆版4)

我非常不愿意安装任何新东西,因为这必须先启动,所以一切都应该到位。我只需要了解这一切是如何工作的。@INC就像LD_LIBRARY_PATH

您将如何切换当前版本?Perl 是否有类似的功能virtualenv

我已经尝试声明 Perl 版本,但只会给出相同的错误消息:

perl/bin/perl5.6.1 bin/emwd.pl

实际错误是:

Can't locate LWP/Simple.pm in @INC (@INC contains: /ade_autofs/ade/perl/bin/Solaris/Opt/lib/5.6.1/sun4-solaris /ade_autofs/ade/perl/bin/Solaris/Opt/lib/5.6.1 /ade_autofs/ade/perl/bin/Solaris/Opt/lib/site_perl/5.6.1/sun4-solaris /ade_autofs/ade/perl/bin/Solaris/Opt/lib/site_perl/5.6.1 /ade_autofs/ade/perl/bin/Solaris/Opt/lib/site_perl .) at bin/emwd.pl line 173. BEGIN failed--compilation aborted at bin/emwd.pl line 173.

看起来很简单,但我不确定是否应该改变@INC

答案1

有两件可能的事情:

1) 不同路径中是否有 perl?也许是从那里手动运行的。

2) 您的LD_LIBRARY_PATH等价物是PERL5LIB。检查周围并查看是否有任何设置。

在你弄清楚之后,是时候开始为自己雕刻一个更好的桨了:)有很多选择,包括在路径下构建一个完整的库树然后PERL5ENV在其上使用它,甚至构建你自己的独立 perl + 库并在所有脚本中调用它。

哦,是的 - Solaris!我怀疑它正在运行非系统 perl。检查/opt/csw/bin/perl或类似内容。我们在我们的一个 Solaris 主机上执行此操作 - 调用 csw perl 来运行我们想要运行的东西,并让系统 perl 保持不变。

答案2

您将如何切换当前版本?Perl 是否有类似 virtualenv 的东西?

是的,佩尔布鲁是 Perl 的虚拟环境等效物。

答案3

您最好的选择是使用 perlbrew,正如所指出的那样海星,并在新环境中运行该脚本。

您也可以安装LWP::Simple在本地目录中,然后/home/falcon将此行添加到脚本顶部use lib '/home/falcon'; (如此处回答)

相关内容