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


72

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

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

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

Answers:


39

随心所欲地制作自己的CPAN镜像。Stratopan.com(一项服务)和基于此工具构建的Pinto工具可以帮助您实现这一目标。

CPA工具仅安装任何发行版的最新版本,因为PAUSE仅索引最新版本。但是,您可以创建自己的私有CPAN,该CPAN具有所需的确切分发。一旦拥有了仅包含所需内容的CPAN镜像,就可以将CPAN工具仅指向该镜像,以便仅安装这些版本。一分钟内可以了解更多。

现在,您希望拥有多个版本。您可以创建任意数量的镜像,也可以将镜像置于源代码管理中,以便可以签出所需版本的镜像。

诸如CPAN :: Mini :: Inject之类的工具可以帮助您设置自己的CPAN。请查看我在Slideshare上的演讲以获取基本示例,并在Vimeo上获取一些视频以进行一些演示。查看标题中带有“ CPAN”或“ BackPAN”的任何内容。我想我在Perl评论中可能也有一些相关内容,或者应该在下一期中发表。:)

最近,我正在开发一个名为dpan(适用于DarkPAN)的程序,该程序可以查看随机目录,在其中查找Perl发行版,并创建所需的结构和索引文件。运行dpan,您将获得一个指向CPAN客户端的URL,然后退出。这是我的MyCPAN-Indexer项目的一部分,该项目位于Github中。还没有准备好在无人监督的公共场合使用,因为我主要与公司客户一起定制他们的设置。如果您对此感兴趣,请随时向我提问。

另外,我最近发布了CPAN :: PackageDetails,可以帮助您构建正确的索引文件。它也还很年轻,但是如果您需要一些特别的东西,那就问一下。


1
谢谢Brian,我目前正在构建本地mini cpan,然后将我们的本地模块+需要降级到特定版本的模块注入其中。
马修·沃森

107

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

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

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

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

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


真好 这使我可以解决无法升级的服务器的兼容性问题。谢谢!
扎克·汤普森

我认为这些天URL不起作用。不过,这确实做到了:backpan.perl.org
Flamey 2011年

install MSCHWERN/Test-Simple-0.62.tar.gz @Schwern我认为您需要放弃M / MS前缀才能找到压缩包
Tom H

@TomH两种样式似乎都可以使用,但是您说对了,就是您所记录的一种,它更简单。请注意,除非您使用的是BackPAN URL,否则这两种方法都不适用于Test-Simple-0.62.tar.gz。
Schwern 2012年

@Chloe修复了它
Schwern

34
cpan install App::cpanminus
cpanm Your::Module@1.23

(如其他答案中所述,纸箱在cpanm下面用于解决显式版本要求。)


这是具体如何“安装一个伟大的回答一个特定版本一个Perl模块,”(因为这个问题出现在一个点)。特别是如果您已经在使用cpanm。
兰德尔

完美:在debian->aptitude install cpanminus
raiserle

要修复错误,Can't configure the distribution您需要运行sudo apt-get install build-essential。感谢您的回答!
奥列格·雷姆

9

[已经快五年了,这是一个问得很好,得到了很好回答的问题,已经引起了很多见解。由于此页面仍必须出现在Google搜索中,因此更新不会受到损害。]

Carton在这里值得一提。Carton是一个相对较新的相同的样式工具App::cpanminusApp::cpanoutdatedperlbrew等。等 作者(宫川)将其称为“ alpha”质量,但即使在目前的状态下,纸箱也有助于简化跨机器的版本调整模块的多个环境的维护。

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


4

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

免责声明:我经营Stratopan。


2

似乎创建cpanfile所有模块和所需版本的清单(使用== <version>语法将其锁定到特定版本)也可以在这里使用。那将意味着使用Cartoncpanm安装模块。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.