如何安装一组 Perl 模块的特定版本?

问题描述 投票:0回答:6

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

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

获取和安装(很多)版本特定的 Perl 模块的最简单/最好的方法是什么。

perl version module cpan
6个回答
108
投票

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 FAQ 下的“如何安装模块的‘DEVELOPER RELEASE’?”


41
投票
cpan install App::cpanminus
cpanm Your::[email protected]

(Carton,如其他答案中所引用,在下面使用

cpanm
来解决明确的版本要求。)


39
投票

根据您的需要制作自己的 CPAN 镜像。

CPAN 工具只安装任何发行版的最新版本,因为 PAUSE 只索引最新版本。但是,您可以创建自己的私有 CPAN,它完全具有您想要的分布。一旦你有了自己的 CPAN 镜像,只有你想要的东西,你就可以将你的 CPAN 工具指向那个镜像,这样它就只安装那些版本。稍后会详细介绍。

现在,您想拥有多个版本。你可以创建任意数量的镜像,你也可以将镜像放在源代码管理中,这样你就可以查看你喜欢的任何版本的镜像。

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

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

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


10
投票

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

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

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


4
投票

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

免责声明:我操作 Stratopan。


2
投票

似乎创建一个

cpanfile
列出所有模块和所需版本(使用
== <version>
语法将其锁定到特定版本)在这里也可以很好地发挥作用。这意味着使用
Carton
cpanm
来安装模块。

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

© www.soinside.com 2019 - 2024. All rights reserved.