2017-02-10 56 views
1

这是我第一次在Ansible中使用cpanm模块。我试图从他们的搜索引擎中抽取一个特定的模块MIME :: QuotedPrint,并且似乎无法使用我的Ansible脚本来获取它。有人可以看看,让我知道我在这里做错了吗?在Ansible中使用cpanm模块

- name: Downloading Perl Modules 
    cpanm: name=MIME::QuotedPrint mirror=http://search.cpan.org/CPAN/authors/id/J/JH/JHI/perl-5.8.0.tar.gz 

我检查了Ansible文档,但我不确定别名/ pkg名称如上所述。谢谢!

+0

'cpanm'没有维护一个搜索引擎。它不隶属于metacpan.org(听起来像你认为的那样)。它只是一个整洁的客户端,可以与任何CPAN镜像一起工作。 – simbabque

+0

感谢您的信息!有没有办法使用cpanm来正确拉取QuotedPrint?或者我是否完全用错误的方式去做? – ryekayo

+0

镜子是错的。 cpan镜像是具有CPAN完整副本的服务器,但您在此处放置了实际的发行版。它看起来像是5.8.0版本中的Perl本身。你关心你要使用哪个CPAN镜像吗?也许一个身体靠近你?在$工作中,我们这样做是因为我们公司提供了一个公共CPAN镜像,所以我们使用它,因为它更接近,因此速度更快。但你不必这样做。在命令行中,你可以执行'cpanm MIME :: QuotedPrint',就是这样。不知道如何让Ansible做到这一点。也许'cmd'?我最近没有使用Ansible。 – simbabque

回答

0

找到了一个不错的工作围绕此:

- name: Installing CPANM 
    command: cpan install App::cpaminus 

- name: Downloading Perl Modules 
    cpanm: name=MIME::QuotedPrint 

这有它才能正常工作。

+3

大多数Linux发行版都将cpanm作为一个包提供,因此您可以随时使用它安装它。 apt或dnf Ansible模块在使用cpanm Ansible模块之前。 – mwp

+3

而你不需要'安装'。从命令行cpan只需要模块名称。在CPAN上有一个名为_install_的软件包,它不会执行任何操作,因为很多人都做错了,删除它会破坏每个人的内容。 – simbabque

+0

cpan install App :: cpaminus不适用于我,无论是在任务中还是在命令行中。 –

1

这非常接近。这里是一个解决方案,改进:

- name: Installing CPANM 
    yum: pkg=perl-App-cpanminus 

- name: Downloading Perl Modules 
    cpanm: name=MIME::QuotedPrint 

它使用最好的Ansible的检查,以避免重新安装cpanm每次。根据以上评论,根据您的Linux风格,将整个yum行更改为aptdnf,包名称也可能不同。