【问题标题】:Cannot find DBI.pm even if it's in the path即使在路径中也找不到 DBI.pm
【发布时间】:2016-08-10 08:38:42
【问题描述】:

我正在尝试安装munin-mysql plugin,但遇到了一个奇怪的错误。 Munin 抱怨在@INC 中找不到DBI.pm

[root@mybox perl5]# munin-run mysql
Can't locate DBI.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /etc/munin/plugins/mysql line 127.
BEGIN failed--compilation aborted at /etc/munin/plugins/mysql line 127.

但是,它确实在路径中,并且恰好在/usr/local/lib64/perl5。它是通过命令cpanm DBI 安装的。 其实有几个DBI.pm文件;我怎么知道要使用哪一个?

[root@mybox perl5]# find / -name DBI.pm
/root/.cpan/build/DBI-1.634-Aazmvi/blib/lib/Bundle/DBI.pm
/root/.cpan/build/DBI-1.634-Aazmvi/blib/lib/DBI.pm
/root/.cpan/build/DBI-1.634-Aazmvi/lib/Bundle/DBI.pm
/root/.cpan/build/DBI-1.634-Aazmvi/DBI.pm
/root/.cpanm/work/1460983027.32244/DBI-1.634/blib/lib/Bundle/DBI.pm
/root/.cpanm/work/1460983027.32244/DBI-1.634/blib/lib/DBI.pm
/root/.cpanm/work/1460983027.32244/DBI-1.634/lib/Bundle/DBI.pm
/root/.cpanm/work/1460983027.32244/DBI-1.634/DBI.pm
/root/munin-mysql-master/t/mock/DBI.pm
/usr/local/lib64/perl5/Bundle/DBI.pm
/usr/local/lib64/perl5/DBI.pm

相关问题:

【问题讨论】:

  • 检查 DBI.pm 文件的权限。
  • 已经完成,文件和父目录的权限为 755。
  • 命令perl -MDBI -e1的结果是什么?
  • 该命令不输出任何内容并以零状态退出。
  • 要使用的正确实例是/usr/local/lib64/perl5/DBI.pm。其他主要是来自 cpan、cpanm 和 munin 的工作文件。 /usr/local/lib64/perl5中的另一个实际上是模块Bundle::DBI

标签: mysql perl dbi munin


【解决方案1】:

munin-run switches users。默认用户为nobody。该用户可能没有读取文件的权限。

脚本必须以足够的权限运行,通常以 root 身份运行,因为它切换到 munin-node 的默认用户(通常是“nobody”)或任何专门配置为运行给定插件的用户。

检查munin-run --debug 以哪个用户身份运行并检查用户是否可以读取/usr/local/lib64/perl5/DBI.pm

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2019-10-11
    • 2018-09-24
    相关资源
    最近更新 更多