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

如何安装一组Perl模块的特定版本?,perl,version,module,cpan,Perl,Version,Module,Cpan,我的任务是复制生产环境以创建许多测试/静坐环境 我需要做的事情之一是构建Perl,使用多年来安装的所有模块(包括内部和外部模块)。我可以只使用CPAN.pm autobundle,但这将导致测试环境拥有生产所拥有的外部模块的更新版本 获取和安装(许多)特定于版本的Perl模块的最简单/最好的方法是什么。根据您的需要制作您自己的CPAN镜像,一项服务,以及在此基础上构建的工具,可以帮助您做到这一点 CPAN工具只安装任何发行版的最新版本,因为PAUSE只索引最新版本。但是,您可以创建自己的私有CP

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

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


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

根据您的需要制作您自己的CPAN镜像,一项服务,以及在此基础上构建的工具,可以帮助您做到这一点

CPAN工具只安装任何发行版的最新版本,因为PAUSE只索引最新版本。但是,您可以创建自己的私有CPAN,该CPAN具有您想要的发行版。一旦您拥有了自己的CPAN镜像,并且只包含您想要的内容,您就可以将您的CPAN工具指向该镜像,以便它只安装这些版本。一分钟后再谈

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

诸如CPAN::Mini::Inject之类的工具可以帮助您设置自己的CPAN。查看基本示例,以及一些演示。看看标题中有“CPAN”或“BackPAN”的内容。我想我可能也有一些关于它的东西,或者应该在下一期之前

最近,我一直在开发一个名为dpan(用于DarkPAN)的程序,它可以查看随机目录,找到其中的Perl发行版,并创建所需的结构和索引文件。运行dpan,得到一个指向CPAN客户端的URL,然后就可以开始了。这是我的MyCPAN索引器项目的一部分,该项目位于。它还没有完全准备好在无监督的情况下供公众使用,因为我主要与公司客户一起定制他们的设置。如果你对此感兴趣,尽管问我问题


另外,我最近发布了一个可以帮助您构建正确索引文件的。它仍然有点年轻,但是再次强调,如果您需要一些特殊的东西,只需询问。

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

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

cpan> o conf urllist push http://backpan.perl.org/
这是在“如何安装模块的‘开发人员版本’?”

[差不多五年过去了,这是一个被问得很好、回答得很好的问题,已经有了很多的浏览量。因为这个页面必须在谷歌搜索中出现,所以更新不会有什么坏处。]

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

另外一个最近的工具也与一些回应相关(事实上,其中一个回应者是贡献者)

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

免责声明:我操作平流层


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

似乎创建一个
cpanfile
列出所有模块和所需版本(使用
=
语法将其锁定到特定版本)也可以很好地满足这一要求。这意味着使用
Carton
cpanm
安装模块


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

谢谢Brian,我目前正在构建本地迷你CPAN,然后我将注入本地模块+需要降级到特定版本的模块。很好。这让我可以解决与服务器的兼容性问题,我还不能升级。谢谢我认为现在URL不起作用了。不过,这一个确实是:
安装MSCHWERN/Test-Simple-0.62.tar.gz
@Schwern我想你需要去掉M/MS前缀,让它找到tarball@TomH这两种风格看起来都很管用,但你是对的,你的风格是有文档记录的,而且更简单。请注意,除非您使用的是BackPAN URL,否则这两种方法都不适用于Test-Simple-0.62.tar.gz。@Chloe修复了它这是一个很好的答案,特别是对于如何“安装特定版本的Perl模块”(正如问题在某一点上出现的那样)。特别是如果您已经在使用cpanm。完美:在debian上->
aptitude安装cpanminus
修复错误
无法配置发行版
您需要运行
sudo-apt-get-install-build-essential
。谢谢你的回答!
cpan> o conf urllist push http://backpan.perl.org/
cpan install App::cpanminus
cpanm Your::Module@1.23