2017-02-10 58 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,包名稱也可能不同。