perl 5.18.2 在我的 Ubuntu 14.04 系统上运行良好,直到我需要来自 CPAN 的一个包,它不作为 Ubuntu 包存在。我以 root 身份安装它但没有用,但安装过程似乎更改了某些内容的权限。现在,我无法以普通用户身份运行 Perl。
作为普通用户,“perl -v”有效。但是“perl -V”给了我这个:
$ perl -V
Can't locate Config.pm: Permission denied.
BEGIN failed--compilation aborted.
如果我在 sudo 下运行它,那么它会工作:
$ sudo perl -V
...
@INC:
/etc/perl
/usr/local/lib/perl/5.18.2
/usr/local/share/perl/5.18.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.18
/usr/share/perl/5.18
/usr/local/lib/site_perl
.
确实,Config.pm 存在于/usr/lib/perl/5.18 中,其权限对普通用户是可读的。所以,有些东西已经切换到 root,我不知道是什么。
有没有人以前看过这个并且知道我应该寻找什么?出于绝望,我什至卸载了 perl 并重新安装了它。没用。虽然有些有趣……卸载后,我仍然有一个 /usr/bin/perl 可执行文件。不确定这是否相关...
任何帮助,将不胜感激!
射线
从一些谷歌搜索(见这里)我了解到,如果@INC 路径中的一个目录不可访问,则放弃对 Config.pm(或任何模块)的搜索。因此,检查是否有任何目录不可被“全部”读取。
奇怪的是,@INC 路径中不存在的目录名没有问题。
您可以尝试安装
local::lib
。但是您可能必须重新安装一些 Perl 模块。sudo apt-get install cpanminus
cpanm --local-lib=~/perl5 local::lib eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
echo "export PERL5LIB=\"$HOME/perl5/lib/perl5\"">>~/.bashrc && echo "export PERL_MB_OPT=\"--install_base '$HOME/perl5'\">>~/.bashrc && echo "export PERL_LOCAL_LIB_ROOT=$HOME/perl5">>~/.bashrc
现在,打开一个新终端(或运行
source ~/.bashrc
)并尝试安装一些 Perl 模块。为我工作!希望也适合你!否则,这意味着您的 CPAN 安装已损坏。在这种情况下,使用命令
sudo dpkg --list | grep libcpan
列出所有 cpan 的包,首先尝试升级包。如果仍然不起作用,请尝试删除并重新安装所有这些!之后,
local::lib
重复上述步骤再次安装。