gpt4 book ai didi

perlbrew 失败, "Can' t locate Devel/PatchPerl.pm"

转载 作者:行者123 更新时间:2023-12-01 14:09:17 25 4
gpt4 key购买 nike

perlbrew失败 Can't locate Devel/PatchPerl.pm .

更准确地说,失败的是运行 patchperlperlbrew 产生.

实际上有一个Devel/PatchPerl.pm通过环境变量中的路径访问 PERL5LIB ,但是 perlbrew运行前无条件删除此变量 perlpatch :

delete $ENV{$_} for qw(PERL5LIB PERL5OPT);

我在 perlbrew 中找不到任何内容证明此操作的文件。

有人可以解释为什么 perlbrew做这个?

编辑:

下面是一个 bash重现问题的脚本。我像这样运行它(使用一些合适的 <PATH_TO_SCRIPT> ):
% env -i HOME=$HOME SHELL=/bin/bash /bin/bash --noprofile --norc
bash-3.2$ /bin/bash --norc --noprofile <PATH_TO_SCRIPT>

该脚本在我的机器上的运行时间约为 4 分钟。输出的最后几行,包括显示错误的行如下:
(cd /tmp/perlbrew_root/build/perl-5.16.3 && rm -f config.sh Policy.sh && patchperl && sh Configure -de '-Dprefix=/tmp/perlbrew_root/perls/perl-5.16.3' '-A'eval:scriptdir=/tmp/perlbrew_root/perls/perl-5.16.3/bin'' && make  && make test_harness && make install) 2>&1 | tee /tmp/perlbrew_root/build.perl-5.16.3.log
Can't locate Devel/PatchPerl.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.3 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at /tmp/testperl/bin/patchperl line 12.
BEGIN failed--compilation aborted at /tmp/testperl/bin/patchperl line 12.
perl-5.16.3 is successfully installed.

上面输出的最后一行( perl-5.16.3 is successfully installed. )是废话: perl-5.16.3 的真实构建和安装大约比这个脚本的运行时间长一个数量级,如前所述,在我的机器上大约需要 4 分钟。

请注意 @INC在错误中。我不明白 patchperl可能会找到 Devel/PatchPerl.pm ,在 /tmp/testperl/lib/perl5 下,鉴于 @INC .
PERLDIR=/tmp/testperl
/bin/rm -rf "$PERLDIR"

/bin/rm -rf /tmp/build
/bin/mkdir -p /tmp/build
cd /tmp/build

/usr/bin/curl -s http://www.cpan.org/authors/id/A/AP/APEIRON/local-lib-1.008009.tar.gz | tar xzf -

pushd local-lib-1.008009
/usr/bin/perl Makefile.PL "--bootstrap=$PERLDIR"
/usr/bin/make install
popd

eval "$( /usr/bin/perl -I$PERLDIR/lib/perl5 -Mlocal::lib=$PERLDIR )"

/usr/bin/cpan App::cpanminus

export PERLBREW_ROOT=/tmp/perlbrew_root
export PERLBREW_HOME=/tmp/perlbrew_home
/bin/rm -rf "$PERLBREW_ROOT" "$PERLBREW_HOME"

$PERLDIR/bin/cpanm App::perlbrew
$PERLDIR/bin/perlbrew init
source "$PERLBREW_ROOT/etc/bashrc"

$PERLDIR/bin/perlbrew install -v perl-5.16.3

最佳答案

升级 perlbrew( perlbrew self-upgrade 或来自 http://perlbrew.pl/ 的 shell bootstrap 咒语)。

最新版本将patchperl 安装到$PERLBREW_ROOT/bin通过 perlbrew install-patchperl .

关于perlbrew 失败, "Can' t locate Devel/PatchPerl.pm",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com