73

我的任务是复制生产环境以创建许多测试/坐席环境。

我需要做的一件事是构建 Perl,以及多年来已安装的所有模块(包括内部和外部模块)。我可以只使用 CPAN.pm autobundle,但这将导致测试环境具有生产环境中的外部模块的更新版本。

获取和安装(大量)特定于版本的 Perl 模块的最简单/最佳方法是什么。

4

6 回答 6

107

bdfoy 拥有最好的大规模解决方案,但如果您只想安装几个模块,您可以通过引用 tarball 的路径(相对于 CPAN 树的顶部)来要求 CPAN shell 安装特定的发行版。

cpan> install MSCHWERN/Test-Simple-0.62.tar.gz

将 BackPAN 的 URL 放入您的 URL 列表中,您可以安装任何旧版本。

cpan> o conf urllist push http://backpan.perl.org/

这在CPAN.pm 常见问题解答中的“如何安装模块的 'DEVELOPER RELEASE'?”

于 2008-11-06T06:27:50.423 回答
39

完全按照您的要求制作您自己的 CPAN 镜像。Stratopan.com是一项服务,而Pinto是建立在其之上的工具,可以帮助您做到这一点。

CPAN 工具仅安装任何发行版的最新版本,因为 PAUSE 仅索引最新版本。但是,您可以创建自己的私有 CPAN,它具有您想要的分布。一旦您拥有自己的 CPAN 镜像,只包含您想要的内容,您只需将您的 CPAN 工具指向该镜像,以便它只安装这些版本。稍后会详细介绍。

现在,你想要有几个版本。您可以根据需要创建任意数量的镜像,也可以将镜像置于源代码管理中,以便查看您喜欢的任何版本的镜像。

CPAN::Mini::Inject 等工具可以帮助您设置自己的 CPAN。查看我在 Slideshare 上的演讲以获取基本示例,以及我在 Vimeo 上的一些视频以获取一些演示。查看标题中包含“CPAN”或“BackPAN”的任何内容。我想我可能在The Perl Review中也有一些关于它的内容,或者应该在下一期。:)

最近,我一直在开发一个名为 dpan(用于 DarkPAN)的程序,它可以查看随机目录,在其中找到 Perl 发行版,并创建您需要的结构和索引文件。你运行 dpan,你会得到一个指向你的 CPAN 客户端的 URL,然后你就走了。它是我在Github中的 MyCPAN-Indexer 项目的一部分。它还没有完全准备好供无人监督的公共使用,因为我主要与企业客户合作定制他们的设置。如果您对此感兴趣,请随时问我问题。

此外,我最近发布了CPAN::PackageDetails,它可以帮助您构建正确的索引文件。它也仍然有点年轻,但同样,如果你需要一些特别的东西,尽管问。

于 2008-11-04T03:41:01.400 回答
39
cpan install App::cpanminus
cpanm Your::Module@1.23

(如其他答案中所引用的,Carton 在cpanm下面使用来解决明确的版本要求。)

于 2015-05-30T00:32:55.127 回答
9

[已经快五年了,这是一个问得好、回答得好的问题,有很多观点。由于此页面仍必须出现在 Google 搜索中,因此更新不会有什么坏处。]

Carton这里值得一提。是一个相对较新的工具,与, , , etCarton风格相同。人。作者 (Miyagawa) 称其为“alpha”质量,但即使在其当前状态下,carton 也有助于简化跨机器的版本调整模块的多个环境的维护。App::cpanminusApp::cpanoutdatedperlbrew

Pinto另一个与某些回复相关的最新工具也是(事实上,其中一位受访者是贡献者)。

于 2013-06-14T05:44:55.730 回答
4

Stratopan.com是另一种选择。Stratopan 在云中提供私有 CPAN。您可以使用特定版本的模块(及其依赖项)填充您的 Stratopan 存储库,然后使用标准 Perl 工具链安装它们。存储库仅在决定更改时才会更改,因此您将始终获得所需的模块版本。

免责声明:我经营 Stratopan。

于 2013-12-05T21:01:30.683 回答
2

似乎创建一个cpanfile列出所有模块和所需版本的列表(使用== <version>语法将其锁定到特定版本)在这里也可以很好地发挥作用。这意味着使用Cartoncpanm安装模块。

这样做的好处是能够快速/轻松地调整文件以测试在开发或登台环境中升级特定模块 - 这是私有 CPAN 镜像不允许您做的事情(无需创建多个镜像)。

于 2016-03-22T15:18:41.303 回答