【发布时间】:2011-09-15 11:13:09
【问题描述】:
我写了一个在 Centos64 上运行的 shell 脚本
在这个脚本的最后,我运行了一个 perl 脚本。
它作为 root 可以正常工作(我已经安装了 perl 模块),但是当我作为系统用户运行它时
我收到消息:
./UserActivityReport.sh
Can't locate MIME/Lite.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /optreports/sendmailUAR.pl line 3.
BEGIN failed--compilation aborted at /opt/reports/sendmailUAR.pl line 3.
好像没有为用户安装模块...
我在我的 shell 脚本中使用这个命令运行脚本:
/usr/bin/perl /opt/reports/sendmailUAR.pl
为什么不运行?
注意:我无法使用系统用户安装 perl 模块。
=== 给你:
perl -MMIME::Lite -MData::Dumper -e'print Dumper \%INC'
$VAR1 = {
're.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/re.pm',
'warnings/register.pm' => '/usr/lib/perl5/5.8.8/warnings/register.pm',
'XSLoader.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/XSLoader.pm',
'IO/Handle.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/IO/Handle.pm',
'MIME/Types.pm' => '/usr/lib/perl5/site_perl/5.8.8/MIME/Types.pm',
'SelectSaver.pm' => '/usr/lib/perl5/5.8.8/SelectSaver.pm',
'IO/Seekable.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/IO/Seekable.pm',
'warnings.pm' => '/usr/lib/perl5/5.8.8/warnings.pm',
'File/Basename.pm' => '/usr/lib/perl5/5.8.8/File/Basename.pm',
'Fcntl.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/Fcntl.pm',
'IO.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/IO.pm',
'Symbol.pm' => '/usr/lib/perl5/5.8.8/Symbol.pm',
'bytes.pm' => '/usr/lib/perl5/5.8.8/bytes.pm',
'MIME/Type.pm' => '/usr/lib/perl5/site_perl/5.8.8/MIME/Type.pm',
'Carp.pm' => '/usr/lib/perl5/5.8.8/Carp.pm',
'MIME/Base64.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/MIME/Base64.pm',
'Exporter/Heavy.pm' => '/usr/lib/perl5/5.8.8/Exporter/Heavy.pm',
'File/Spec/Unix.pm' => '/usr/lib/perl5/5.8.8/File/Spec/Unix.pm',
'FileHandle.pm' => '/usr/lib/perl5/5.8.8/FileHandle.pm',
'strict.pm' => '/usr/lib/perl5/5.8.8/strict.pm',
'Exporter.pm' => '/usr/lib/perl5/5.8.8/Exporter.pm',
'vars.pm' => '/usr/lib/perl5/5.8.8/vars.pm',
'MIME/Lite.pm' => '/usr/lib/perl5/site_perl/5.8.8/MIME/Lite.pm',
'MIME/QuotedPrint.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/MIME/QuotedPrint.pm',
'File/Spec.pm' => '/usr/lib/perl5/5.8.8/File/Spec.pm',
'overload.pm' => '/usr/lib/perl5/5.8.8/overload.pm',
'IO/File.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/IO/File.pm',
'Mail/Address.pm' => '/usr/lib/perl5/site_perl/5.8.8/Mail/Address.pm',
'Data/Dumper.pm' => '/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/Data/Dumper.pm'
};
【问题讨论】:
-
以root身份运行
perl -MMIME::Lite -MData::Dumper -e'print Dumper \%INC'并在此处发布输出。 -
系统用户的@INC 中似乎没有
/usr/lib/perl5/site_perl/5.8.8/。看看:*.com/questions/2526804/… -
文件在那里没问题...它的权限是什么?
-
@Lin 怎么会这样?根据错误消息,它包含在 \@INC 中。
-
[root~]# ls -l /usr/lib/perl5/site_perl/5.8.8/ total 60 drwxr-x--- 3 root root 4096 Sep 14 13:09 Date drwxr-x --- 3 root root 4096 Sep 14 13:09 Email drwxr-x--- 4 root root 4096 Sep 14 13:10 Mail drwxr-x--- 2 root root 4096 Sep 14 13:10 MIME drwxr-x-- - 2 root root 4096 Sep 15 06:30 OLE drwxr-x--- 2 root root 4096 Sep 15 06:30 Parse drwxr-x--- 2 root root 4096 Sep 14 13:10 Pod drwxr-x--- 3 root root 4096 Sep 15 06:30 Spreadsheet drwxr-x--- 2 root root 4096 Sep 14 13:09 Time -r--r--r-- 1 root root 6500 Aug 21 07:19 version.pm -r- -r--r-- 1 root root 9887 Aug 21 07:12 version.pod