首页 > 解决方案 > Perl 程序无法加载模块(CentOS 7)

问题描述

我在几台机器上安装并使用了程序模块工具,但这次我无法让它工作(CentOS 7)。一个问题是,我必须用“perl test.pl”而不是“test.pl”来调用我的程序。更大的问题是,程序没有运行,它会因错误而停止。

https://github.com/OTRS/module-tools

[root@localhost bin]# sudo -u otrs perl otrs.ModuleTools.pl Module::File::Link
Could not require Console::Command::List:
Attempt to reload Console/BaseCommand.pm aborted.
Compilation failed in require at /usr/share/perl5/vendor_perl/parent.pm line 20.
BEGIN failed--compilation aborted at /opt/module-tools/lib/Console/Command/List.pm line 16.
Compilation failed in require at /opt/module-tools/lib/System.pm line 60.

有人有什么想法吗?

编辑:我用 cpanm 安装了依赖项。看起来该程序以root身份运行得更远。它不应该以 root 身份运行,因此它会因错误而关闭,但它会加载无法以其他用户身份运行的文件

Edit2:当我运行“perl -V”时,最后会有所不同。根:

Built under linux
  Compiled at Jan 21 2019 22:09:19
  %ENV:
    PERL5LIB="/root/perl5/lib/perl5"
    PERL_LOCAL_LIB_ROOT="/root/perl5"
    PERL_MB_OPT="--install_base "/root/perl5""
    PERL_MM_OPT="INSTALL_BASE=/root/perl5"
  @INC:
    /root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi
    /root/perl5/lib/perl5/5.16.3
    /root/perl5/lib/perl5/x86_64-linux-thread-multi
    /root/perl5/lib/perl5
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

其他用户:

Built under linux
  Compiled at Jan 21 2019 22:09:19
  @INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5
    .

这可能与此有关吗?输出中的其他所有内容都是相同的。

已解决!:我再次安装了整个虚拟机,这次我安装了 cpanm

sudo yum install "perl(App::cpanminus)"

我不记得我以前是怎么做到的,但最后一次我不得不给 cpanm 一些设置并在某一点选择“local::lib”而不是“sudo”。我想我应该选择“sudo”。不过现在可以了,谢谢

标签: perlcentos7

解决方案


从 cpanfile 安装依赖项。如果你的服务器上有 cpanm,你可以这样做:

cd ./module-tools
cpanm -l ./deps --installdeps .
perl -I ./deps/lib/perl5/ ./bin/otrs.ModuleTools.pl

我们可以强制 cpanm 将所有依赖项安装到带有-l标志的选择目录中,然后,我们向解释器显示所有依赖项在哪里-I ./deps/lib/perl5/


推荐阅读