我已经在自动 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/