perl - 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”。不过现在可以了,谢谢
解决方案
从 cpanfile 安装依赖项。如果你的服务器上有 cpanm,你可以这样做:
cd ./module-tools
cpanm -l ./deps --installdeps .
perl -I ./deps/lib/perl5/ ./bin/otrs.ModuleTools.pl
我们可以强制 cpanm 将所有依赖项安装到带有-l
标志的选择目录中,然后,我们向解释器显示所有依赖项在哪里-I ./deps/lib/perl5/
推荐阅读
- ruby-on-rails - “物化”:找不到
- here-api - 这里 Waypoint Sequencing API 不支持交付窗口
- python - Python:将 Argparse.parseargs 获取为原始字符串
- typescript - TypeScript 泛型映射可变元组值到嵌套映射类型
- sql-server - SQL Server:结合日期列和时间列,插入到日期时间列
- android-studio - 当它说“帧不可用于未挂起的线程”时,如何在不停止进程的情况下恢复调试器
- sql-server - 如何使用 TypeORM Query Builder 转换字符串的查询“WHERE IN”?
- java - javax.jcr.RepositoryException 试图遵循 Adobe 示例
- random-forest - 尝试使用扫帚为多个 randomForest 模型获取整洁的摘要时出错
- python - 在 Pandas DataFrame 的列表内的元组内创建元组