strawberry-perl - Perl:如何处理重复的模块安装?
问题描述
我是 Perl 的新手,偶然发现了双模块安装。
我在. _ Windows 10
之后,我尝试使用此答案中提出的命令一次更新所有模块;:
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
解决方案
一切都按预期工作。
共有三组安装位置:核心、供应商和站点。
供应商目录通常由 linux 发行版的包管理器使用,但似乎 Strawberry Perl 在其发行版中包含许多非核心模块(包括 Mojolicious)并将这些放在供应商目录中。这是正确的。[1]
站点目录用于用户安装的模块。因此,您升级后的 Mojolicious 已安装到站点目录中。这是正确的。
(更多关于这里的差异。)
这不是问题,因为站点目录放在供应商目录之前@INC
,因此在供应商安装版本之前找到了用户安装的模块版本。
- 使用站点目录可能也很好,因为 Strawberry Perl 没有提供管理它捆绑的发行版的方法。但是使用供应商目录肯定是安全的。
推荐阅读
- javascript - 通过JS添加类无法正常工作
- amazon-web-services - 使用 AWS Amplify 反应本机身份验证 - 登录时的 Hub.Listen 行为不一致
- python - GDAL 已安装但不会导入到 Jupyter Notebooks 尽管修复了 PATH?[Python]
- php - codeigniter smtp 邮件无法正常工作
- amazon-web-services - 使用 boto3 获取 S3 公共策略
- android - Recompose 方法在 Jetpack Compose 中不起作用
- python - pyinstaller 可执行文件的差异更新(修改嵌入式 PYZ-00.pyz)
- android - 如何使用 Play 应用签名和应用程序包设置 Unity 应用程序并将其部署到 Google Play?
- javascript - 无法在我的网站上显示 Bootstrap Toast
- python - 如何拆分数据之间的时间步长大于 1 秒的 pandas 数据帧?