gpt4 book ai didi

perl - 如何告诉 CPAN.pm 使用特定于应用程序的 mini-cpan?

转载 作者:行者123 更新时间:2023-12-01 00:06:34 26 4
gpt4 key购买 nike

有没有办法使用特定于应用程序的 mini-CPAN(以确保不同应用程序的特定模块版本并在没有网络访问的情况下进行安装)。 '标准' mini-cpan 方式依赖于在 CPAN/Config.pm 中使用文件 url 设置 'o conf urllist'

一个迷你cpan就可以了。但是,我需要自动为每个应用程序(应用程序本地)从不同的目录安装 CPAN,因为每个应用程序都有不同的版本要求。

以下几乎可以工作,但只有部分工作的外壳,并且仍然从网络获取而不是使用来自 $file_url 的 mini-cpan地点:

use CPAN;
use FindBin qw($Bin);

my $file_url="file:///$Bin/../cpan";
CPAN::Shell->o(qw( conf urllist ),$file_url);

CPAN::shell();

最佳答案

您为每个应用程序加载不同的配置文件。最新cpan命令有 -j切换到这样做:

$ cpan -j some/app/Config.pm -i Foo::Bar

CPAN.pm 中不包含此最新功能尚未分发,因为它是实验性的。但是,作为我的 DPAN 的一部分,我已经使用它几个月了。工作。

如果您不喜欢其中任何一个,您只需提供特定于应用程序的 CPAN::Config模块 Perl 在找到您的个人或站点范围的版本之前会找到它。将您当前的 CPAN/Config.pm 复制到您的应用程序模块目录中,并确保该目录在 @INC 中的第一个(可能使用 PERL5LIB 环境变量)。 CPAN.pm 应该首先找到并使用它。它只使用它找到的第一个。当配置固定时,这很方便,尽管它有点灵活,因为您可以在模块中运行代码。它的配置为 Perl 代码。

如果这对您来说还不够好,您可以覆盖 CPAN::HandleConfig()在您的应用程序中,因此 CPAN.pm 不会加载任何文件。然后您自己设置值。当您需要解决大量应用程序逻辑以找出一些配置值时,这尤其方便。 CPAN.pm 配置只是 %CPAN::Config哈希,因此您只需为适当的键设置正确的值。

在任何情况下,您可能希望将“connect_to_internet_ok”配置设置为 false 值并清除您的“urllist”以仅具有本地 minicpan。

关于perl - 如何告诉 CPAN.pm 使用特定于应用程序的 mini-cpan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com