从没有 CPAN::Mini 的本地镜像安装 CPAN 模块

Install CPAN modules from a local mirror without CPAN::Mini

我公司部分电脑只有IE可以上网。所以我想知道我是否可以在本地镜像中拥有一些 CPAN 模块的本地副本。我听说 CPAN::Mini 模块可以将本地镜像与 public 同步。

如何使用 IE 在我的镜像中手动下载我想要的模块并配置 cpan 在本地查找模块?

编辑

我无法使用 CPAN::Mini 或其他类似工具,因为只有 IE 可以访问互联网。我需要先通过 IE 复制我的镜像。

如果您只想要 CPAN 的部分镜像,可以使用 OrePAN2 轻松实现。

orepan2-inject --simple Module::Name /path/to/darkpan/

这还将为您生成 02packages 文件,CPAN 客户端可以读取该文件。

orepan2-inject --simple Carton darkpan
Wrote 1 from Carton
[INFO] Could not find useful meta from 'darkpan/authors/id/D/DU/DUMMY/Carton-    v1.0.12.tar.gz'
[INFO] Scanning for provided modules...
/tmp/foo ∙ tree darkpan/
darkpan/
├── authors
│   └── id
│       └── D
│           └── DU
│               └── DUMMY
│                   └── Carton-v1.0.12.tar.gz
├── modules
│   └── 02packages.details.txt.gz
└── orepan2-cache.json

CPAN::Mini 使用 LWP 来获取文件。问题的实质是这条简单的线:

my $res = $self->{__lwp}->mirror($remote_uri, $local_file);

那只是来自 LWP::UserAgent. Come up with a replacement method that uses IE instead, perhaps using Win32::OLE to drive IE and there you are. CPAN::Minimirror 可以对获取文件的东西使用一些依赖注入。

曾经有一个名为 Win32::Mechanize::IE 的工具,但它 stopped working with the new IE8 security module

或者,我会探索使内部 LWP object 看起来像 IE 的方法。我不知道您的代理或网络的详细信息,但我敢打赌,您可以从 LWP 伪造一些魔术 headers 或设置。参见,例如,HTTPS Proxy and LWP::UserAgent。我不得不相信,不仅仅是 IE 可以访问互联网。

作为最后的努力,请全力以赴给 Windows 管理员喝点啤酒。结交朋友并节省一些编码。 :)


如果我没有发现源代码被 Dist::Zilla 胡说八道,我可能已经完成了依赖注入工作。我从来没有特别关心人们使用什么工具,只要他们不强迫我使用相同的工具并且文字源代码不依赖于外部工具的要求即可。

已经到了这样的地步,即人们为了在酷孩子 table 的席位而放弃参与,因为协作的障碍如此之高。我只是对此感到厌恶,因为我认为人们没有意识到这种权衡。当他们决定不提供帮助时,没有人会告诉您。他们根本不提供帮助,而且您没有意识到您放弃了他们本可以贡献的所有时间。