我是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
答案 0 :(得分:3)
一切正常。
共有三套安装位置:核心,供应商和站点。
vendor目录通常由linux发行版的软件包管理器使用,但似乎Strawberry Perl在其发行版中包括许多非核心模块(包括Mojolicious),并将其放置在vendor目录中。 这是正确的。 [1]
站点目录用于用户安装的模块。因此,已升级的Mojolicious已安装到站点目录中。 这是正确的。
(有关差异here的更多信息。)
这不是问题,因为站点目录放置在@INC
中的供应商目录之前,因此可以在供应商安装版本之前找到模块的用户安装版本。