加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl – Local :: lib不能始终在@INC中找到本地路径 – 与perlbr

发布时间:2020-12-16 06:21:02 所属栏目:大数据 来源:网络整理
导读:我没有对系统的root访问权限,所以我使用local :: lib安装perl模块,我使用bootstrapping方法安装它: perl Makefile.PL --bootstrap=~/foomake test make installecho '[ $SHLVL -eq 1 ] eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' ~/.bash_profi
我没有对系统的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中它仍然无效.

我很擅长使用p??erl.问题可能是我还安装了perlbrew吗?如果是这样,我怎样才能对prelbrew进行“干净”的卸载?

解决方法

您在其中打印环境的shell显示PERL5LIB已设置为添加

/home/dpearton/perl5/lib/perl5

/home/dpearton/perl5/lib/perl5

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

两种可能性:

> perl继承了与你倾倒的环境不同的环境,或者
>那个perl是以-T(污点模式)开始的.

检查fasgrep的shebang行,看看是否用-T来排除这种可能性.我怀疑-T被使用了.它增加了一些安全检查,以防止用户输入结束执行的命令.删除-T只会删除那些检查.由于此脚本既不是外部可访问也不是setuid,因此-T的好处已经非常小.如果这是问题,请继续将其删除.

我怀疑这是另一种可能性,特别是因为你表明fasgrep是从一个不同的提示符(%)开始的,而不是你运行set($)的提示符.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读