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

问题描述 投票:0回答:1

我已经在自动 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 存储库。

perl module repository configure cpan
1个回答
3
投票

简短回答:

o conf pushy_https 0

如果

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

© www.soinside.com 2019 - 2024. All rights reserved.