【问题标题】:Perl: How to deal with a duplicated modules installation?Perl:如何处理重复的模块安装?
【发布时间】:2019-12-13 11:50:16
【问题描述】:

我是 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

【问题讨论】:

    标签: strawberry-perl perl cpanm


    【解决方案1】:

    一切都按预期进行。


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

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

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

    (更多关于差异here。)

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2020-03-19
      • 2016-07-08
      相关资源
      最近更新 更多