我没有对系统的root访问权限,所以我使用local :: lib安装perl模块,我使用bootstrapping方法安装了它:
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来安装模块FAST。但是,当我尝试使用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在本地lib中是可用的,但系统似乎没有在那里查找它。
根据路径变量,它应该在正确的位置查找:
$ 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
我甚至将导出PER5LIB = $ HOME / perl5 / lib / perl5添加到我的.bash_profile中它仍然无法正常工作。
我很擅长使用perl。问题可能是我还安装了perlbrew吗?如果是这样,我怎样才能对prelbrew进行“干净”的卸载?
答案 0 :(得分:5)
您在其中打印环境的shell显示PERL5LIB
已设置为添加
/home/dpearton/perl5/lib/perl5
和
/home/dpearton/perl5/lib/perl5
到@INC
,但在尝试加载@INC
的{{1}}的{{1}}中找不到这些(相同的)路径。
两种可能性:
perl
继承了与您转储的环境不同的环境,或FAST.pm
以perl
(污点模式)启动。检查perl
的shebang行,看看是否-T
被用来排除这种可能性。我怀疑fasgrep
是否被使用过。它增加了一些安全检查,以防止用户输入结束执行的命令。删除-T
只会删除这些检查。由于此脚本既不是外部可访问也不是setuid,-T
的好处已经非常小。如果这是问题,请继续将其删除。
我怀疑它是另一种可能性,特别是因为您显示的-T
是从不同的提示符(-T
)开始的,而不是您运行的fasgrep
%
set
1}})。