perl - 安装 perl 模块时 cpan 不使用配置的存储库而是尝试连接到 cpan.org

标签 perl module repository configure cpan

我已经在自动 shell 脚本中安装了 perl 和 cpan。 仅从脚本本身配置一个本地存储库,如下所示:

echo o conf urllist https://localrepo.mylab.mycompany.com/cpan
echo o conf commit

它配置并写入配置文件:

commit: wrote '/root/.cpan/CPAN/MyConfig.pm'

当我在此之后显示 urllist 时,它正确显示为:

urllist           
[https://localrepo.mylab.mycompany.com/cpan]
Type 'o conf' to view all configuration items

但是当我尝试安装 perl 模块时,它尝试连接到 cpan.org 而不是 localrepo

cpan -f -i inc::latest
20:16:59  Loading internal logger. Log::Log4perl recommended for better logging
20:16:59  
20:16:59  Trying with
20:16:59      /usr/bin/wget -O "/root/.cpan/sources/authors/01mailrc.txt.gz.tmp18229"
20:16:59  to get
20:16:59      https://cpan.org/authors/01mailrc.txt.gz
20:16:59  --2023-02-21 15:46:59--  https://cpan.org/authors/01mailrc.txt.gz
20:16:59  Resolving cpan.org (cpan.org)... 151.101.193.55, 151.101.129.55, 151.101.65.55, ...
20:19:21  Connecting to cpan.org (cpan.org)|151.101.193.55|:443... failed: Connection timed out.
20:21:27  Connecting to cpan.org (cpan.org)|151.101.129.55|:443... failed: Connection timed out.

我想知道为什么它连接到 cpan.org 以及如何使其连接到 localrepo。

尝试删除 URL 列表中的所有其他存储库并仅添加一个存储库。 仍然没有连接到配置的存储库。如果显示 urllist,则它仅显示一个配置的存储库。并且它从不显示 cpan.org 存储库。

最佳答案

简短回答:`o conf Pushy_https 0`

如果“pushy_https”设置为 true(或“undef”),则 CPAN 客户端会忽略“urllist”设置并直接进入 CPAN,无论愿意与否。这是几年前为了应对存储库欺骗攻击而添加的。这次攻击可能没有直接涉及 Perl(我的内存对此不太清楚),但 p5p 决定无论如何都要回应它。将此设置为默认值意味着默认行为是安全的,但对于我们这些保留自己的镜像的人来说,这让事情变得有点复杂,而且这样做的必要性并不明显。

关于perl - 安装 perl 模块时 cpan 不使用配置的存储库而是尝试连接到 cpan.org,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75523351/

相关文章:

javascript - 从模块导出的变量在 Angular 类的函数内部无法访问

javascript - 用 Javascript 编写真正私有(private)的函数

maven - 清除 Maven 本地存储库并保持最新?

linux - 如何将 git 存储库分离/解耦到不同的位置

c# - MVC架构中模型/业务层/数据访问和存储库之间有什么区别?

python - 如何将变量分配给 json 响应?

perl - 为什么相同的函数调用在对象内部会带来不同的结果?

MongoDB/Perl : find_one doesn't return data after unrelated code

python - 列出作为 python 包一部分的所有模块?

mysql - 如何使用perl限制从文件向mysql插入数据