【问题标题】:Downloading all dependencies for a Perl module下载 Perl 模块的所有依赖项
【发布时间】:2015-11-24 16:32:49
【问题描述】:

这可能是一个重复的问题,请原谅我的搜索技巧。

我需要在 Windows/cygwin 机器(使用 Perl 5.10.1)上下载特定 Perl 模块(local::lib 和其他)的所有依赖项,并将它们移动到 Solaris 机器(使用 Perl 5.8.8)上没有互联网连接。

我在this question 中看到了建议的 minicpan,但是创建 CPAN 的完整副本不是一个选项,因为我在带宽有限的公司网络上。 CPAN::Mini 有一些过滤选项,但它处理路径而不是依赖关系。

有没有办法做到这一点?

谢谢,

伊万

【问题讨论】:

    标签: perl dependencies


    【解决方案1】:

    查看 Perl 发行版中包含的 cpan2dist 实用程序。 (它在我的 Cygwin 安装中的 /usr/bin 中。)

    cpan2dist --help
    

    将创建模块的 FMT 类型的分布 在命令行中指定,以及它们的所有先决条件。

    还可以从本地创建 FMT 类型的分布 存档及其所有先决条件

    没试过,但听起来像你想要的。

    【讨论】:

    • 我期待典型的“perl -MCPAN -e 'install module'”响应并且惊喜不已!有时间一定要试试这个。
    • 谢谢!我接受了这个答案,但我自己没有尝试过(只是使用了另一台可以上网的机器:-P)。但是从我在 cpan2dist 选项中看到的情况来看,您仍然必须编译所有包和依赖项。我使用了以下命令:cpan2dist --format CPANPLUS::Dist::Build --buildprereq --skiptest --keepsource local::lib 它给了我编译先决条件的错误,所以我没有进一步研究它。如果有人有更简洁的方式下载源代码,请告诉我。
    【解决方案2】:

    cpanminus 有一个选项可以做到这一点:--scandeps 和--save-dists。在解释 the new features of cpanm 1.4 的博客文章中阅读有关该选项的更多信息。

    【讨论】:

    • 谢谢,这看起来不错。但是我仍然遇到以前使用不同 Perl 版本时遇到的问题。使用 Perl 5.12.3 运行 cpanm --scandeps --save-dists -L /tmp/perl5 local::lib 只会产生 local::lib,因为所有其他依赖项都已经在核心中。但是我需要一种方法来指定我要测试的 Perl 版本;有点像下载deps.cpantesters.org 输出的自动化工具。毕竟这可能不是一个坏主意......
    • 这个答案stackoverflow.com/a/17303468/4940240 有一个很好的想法:使用“-L /dev/null”,以便 cpanm 假设没有安装任何模块。它将下载所有非核心模块(据我了解)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 2011-05-23
    • 1970-01-01
    • 2013-11-29
    • 2010-11-15
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多