4

我没有对系统的 root 访问权限,所以我使用 local::lib 安装 perl 模块,我使用引导方法安装了该模块:

perl Makefile.PL --bootstrap=~/foo
make test && make install
echo '[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bash_profile

然后我成功安装了 cpanm 并使用 cpanm 快速安装了模块。但是,当我尝试使用 fasgrep 函数时,出现以下错误:

% fasgrep
Can't locate FAST.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 /home/dpearton/perl5/bin/fasgrep line 5.

我已经检查了 FAST.pm 在本地库中是否可用,但系统似乎并没有在那里寻找它。

根据路径变量,它应该在正确的位置查找:

$ echo PATH=$PATH ; env|sort|grep PERL
PERL5LIB=/home/dpearton/perl5/lib/perl5:/home/dpearton/perl5/lib/perl5
PERLBREW_BASHRC_VERSION=0.73
PERLBREW_HOME=/home/dpearton/.perlbrew
PERLBREW_ROOT=/home/dpearton/perl5/perlbrew
PERL_LOCAL_LIB_ROOT=/home/dpearton/perl5
PERL_MB_OPT=--install_base "/home/dpearton/perl5"
PERL_MM_OPT=INSTALL_BASE=/home/dpearton/perl5

我什至将 export PER5LIB=$HOME/perl5/lib/perl5 添加到我的 .bash_profile 中,但它仍然不起作用。

我对使用 perl 很陌生。问题可能是我还安装了 perlbrew 吗?如果是这样,我怎样才能对 prelbrew 进行“干净”卸载?

4

1 回答 1

5

您打印环境显示的外壳PERL5LIB设置为添加

/home/dpearton/perl5/lib/perl5

/home/dpearton/perl5/lib/perl5

到,但在尝试加载的@INC路径中都找不到那些(相同的)路径。@INCperlFAST.pm

两种可能:

  • 继承了与你perl抛弃的环境不同的环境,或者
  • perl是从-T(污染模式)开始的。

检查 shebang 线,fasgrep看看是否-T用于排除这种可能性。我怀疑那-T是用过的。它添加了一些安全检查,以防止用户输入最终出现在执行的命令中。删除-T只会删除这些检查。由于这个脚本既不是外部可访问的,也不是 setuid 的,它的好处-T已经很小了。如果这是问题,请继续删除它。

我怀疑这是另一种可能性,特别是因为您显示的提示符( )与您运行的fasgrep提示符()不同。%set$

于 2015-09-25T14:36:46.087 回答