如何在Linux服务器上查找Perl模块的位置?

Rya*_*yan 2 linux perl

我们将旧服务器上的所有内容都移到了新服务器上。我们的新服务器上的一个网站使用Perl后端。当我在浏览器中转到该Perl站点时,将引发500个内部服务器错误。当我从命令行像这样运行Perl脚本时:

perl -wc login.pl

我收到此错误:

Can't locate LoadINC.pm

在login.pl的顶部是这样的:

#!/ usr / bin / perl

开始{使用LoadINC; }

...

因此,看起来LoadINC我们的新服务器缺少了Perl模块。

旧服务器仍在运行,并且没有此问题。因此,我的想法是将LoadINC模块定位在旧服务器上,然后将其放在新服务器上的同一位置。还是有更好的方法?模块是否隐藏在某个二进制文件中?两台服务器上查找Perl模块的位置是否不同?

需要注意的另一件事是,旧服务器上的Perl版本是5.8.8,而新服务器上的版本是5.16.3。

ike*_*ami 5

如何在Linux服务器上查找Perl模块的位置?

perl -mFoo::Bar -le'print $INC{"Foo/Bar.pm"}'
Run Code Online (Sandbox Code Playgroud)

要么

perldoc -lm Foo::Bar
Run Code Online (Sandbox Code Playgroud)

在这种情况下,

perl -mLoadINC -le'print $INC{"LoadINC.pm"}'
Run Code Online (Sandbox Code Playgroud)

要么

perldoc -lm LoadINC
Run Code Online (Sandbox Code Playgroud)

因此,我的想法是将LoadINC模块放在旧服务器上,然后将其放在新服务器上的同一位置。还是有更好的方法?

我们应该如何知道如何安装模块?

大多数模块使用以下一种安装

perl Makefile.PL
make test
make install
Run Code Online (Sandbox Code Playgroud)

要么

perl Build.PL
./Build test
./Build install
Run Code Online (Sandbox Code Playgroud)

简单地复制文件可能会起作用,但是有许多原因导致它不起作用。从好的方面来说,您会立即知道它在大多数情况下是否有效。


两台服务器上查找Perl模块的位置是否不同?

搜索的目录列表肯定会有所不同(考虑到版本的差异),尽管两个内部版本可能具有相同的目录。

与体系结构无关的模块应安装在以下命令的输出所命名的目录中:

perl -V:installprivlib
Run Code Online (Sandbox Code Playgroud)