2
PS> cpanm --self-upgrade
You are running cpanm from the path where your current perl won't install executables to.
Because of that, cpanm --self-upgrade won't upgrade the version of cpanm you're running.

  cpanm path   : C:\Programs\Strawberry\perl\site\bin\cpanm.bat
  Install path : C:\Programs\STRAWB~1\perl\site\bin

It means you either installed cpanm globally with system perl, or use distro packages such
as rpm or apt-get, and you have to use them again to upgrade cpanm.

我如何 (a) 让 cpanm 理解这些是相同的路径,或者 (b) 更改配置的 Perl 可执行安装路径?

4

1 回答 1

1

而不是,只是像诀窍cpanm --self-upgrade一样去做。cpanm App::cpanminus(有一个错误,cpanm.bat.AAA无法重命名为cpanm.bat,下次启动时会重命名,但我只是手动重命名。)


并且为了防止类似的其他潜在问题,我将 Perl 移到下面C:\Programs\berry\(只是为了让它保持在 8 个字母以下),并编辑lib/CPAN/Config.pm, lib/Config_heavy.pl,以在每个路径lib/Config.pm中替换为。 (这里的最后两个文件是http://www.perlmonks.org/?node_id=680994中的答案所建议的,第一个文件来自. 期间的输出。) STRAWB~1berry
cpano conf

不幸的是,此路径更改无助于使 cpanm--self-upgrade工作,因为它打印与问题中相同的错误消息,现在显示为不同的路径:

cpanm path   : C:\Programs\berry\perl\site\bin\cpanm.bat
Install path : C:\Programs\berry\perl\site\bin

嗯?它们不是相同的路径吗?好吧,https: //metacpan.org/source/MIYAGAWA/App-cpanminus-1.7039/lib/App/cpanminus/fatscript.pm 的第 634 行似乎是进行此检查的地方,并且该行假设$install_base不会包含特殊字符 - 但是 Windows 路径中的反斜杠被 Perl 视为特殊字符。因此,Perl 在安装路径中看到与 cpanm 路径不同的奇怪字符,并将其声明为不匹配。
将正则表达式匹配更改为/\Q$install_base\E/可以解决此问题,但作为最终用户的直接解决方案是cpanm App::cpanminus顶部的解决方案。

于 2015-08-17T12:34:27.423 回答