Perl:如何处理重复的模块安装?

时间:2019-08-06 00:00:40

标签: perl strawberry-perl perl5 cpanm

我是Perl的新手,偶然发现了两倍的模块安装量。

我在Windows 10上全新安装了Strawbery Perl。之后,我尝试使用此answer中建议的命令来一次更新所有模块。 :

cpan-outdated -p | cpanm

不幸的是,似乎更新已安装在另一个位置:

whichpm -a Mojolicious
C:\Strawberry\perl\site\lib\Mojolicious.pm
C:\Strawberry\perl\vendor\lib\Mojolicious.pm


whichpm -v Mojolicious
whichpm: WARNING: DUPLICATE module files found for 'Mojolicious':
  C:\Strawberry\perl\vendor\lib\Mojolicious.pm
Mojolicious     8.22    (non-core)      C:\Strawberry\perl\site\lib\Mojolicious.pm

该如何处理?

如何防止此类情况发生进一步的更新?

perl -wE "say for @INC"

C:/Strawberry/perl/site/lib/MSWin32-x64-multi-thread
C:/Strawberry/perl/site/lib
C:/Strawberry/perl/vendor/lib
C:/Strawberry/perl/lib

1 个答案:

答案 0 :(得分:3)

一切正常。


共有三套安装位置:核心,供应商和站点。

vendor目录通常由linux发行版的软件包管理器使用,但似乎Strawberry Perl在其发行版中包括许多非核心模块(包括Mojolicious),并将其放置在vendor目录中。 这是正确的。 [1]

站点目录用于用户安装的模块。因此,已升级的Mojolicious已安装到站点目录中。 这是正确的。

(有关差异here的更多信息。)

这不是问题,因为站点目录放置在@INC中的供应商目录之前,因此可以在供应商安装版本之前找到模块的用户安装版本。


  1. 使用站点目录可能也很好,因为Strawberry Perl没有提供管理捆绑的发行版的方法。但是使用供应商目录肯定是安全的。