2009-11-05 46 views
3

我最近開始一些Perl開發,並使用CPAN來安裝我的所有軟件包。我想知道是否有一些「最佳實踐」來管理腳本或應用程序所需的軟件包。到目前爲止,我正在做這種不雅而麻煩的方式。我有一個腳本,看起來像這樣:我怎樣才能一次安裝幾個CPAN發行版?

install Foo::Bar 
install Zulu::Car 
... 

,然後我做

$perl -MCPAN -e shell < mycpan.foo 
+0

我結束了使用Module :: Install並創建了一個Makefile.PL的形式: 使用inc :: Module :: Install; .. 需要'Foo :: Bar'; 要求'祖魯::汽車'; .. – ankimal 2009-11-11 01:50:44

回答

1

我也不會高興,如果我下載了你的腳本,它會自動安裝一些CPAN包。正常的做法是簡單地列出文檔中的依賴關係,並讓用戶以他喜歡的任何方式自行安裝它們。

如果您自己創建一個CPAN模塊,您的CPAN安裝腳本中有一種標準的表示依賴關係的方式,該腳本是您的分發製造商爲您創建的(例如ExtUtils::MakeMakerModule::Install)。

+0

爲什麼downvote? – Ether 2009-11-06 01:37:10

+1

這不應該有必要使用wetware,這是最後的手段 – 2009-11-06 04:05:19

4

即使您不上傳它,也可以像CPAN模塊一樣構建您的應用程序。

這基本上意味着你有一個正式描述依賴關係的Makefile.PL,你的應用程序作爲myapplication(假設它是一個命令行/桌面應用程序)在腳本/目錄中。

然後,有人可以使用CPAN客戶端安裝模塊,它的直接相關性,但解包壓縮包,然後運行

CPAN。

或者,該pip工具可讓人們直接從遠程URL安裝應用程序。

PIP http://someserver.com/Your-Application-0.01.tar.gz

+0

你怎麼能忘記提到任務? :) – 2009-11-06 18:18:30

-1

我發現,對於大型生產系統依賴於第三方的代碼源,如CPAN生產部署是不切實際的。因此,我總是使用系統(例如apt,rpmGNU stow)爲所有系統的依賴項構建軟件包,然後使用軟件包管理器將所有必需的軟件包部署到生產服務器。

+0

爲什麼downvote? – nohat 2009-11-11 13:41:45

2

這就是爲什麼Task::*分佈存在。您列出了您想要作爲依賴關係安裝在您的Task ::發佈中的所有發行版。任務發行本身不提供任何東西。

如果你是,你已經設置了工作目錄內:

$ cpan Task::WhateverYouCalledIt 

$ cpan . 

如果您有任務在MiniCPAN或DPAN,那麼你可以通過名稱安裝

一旦CPAN.pm獲取它,它會自動安裝所有的依賴關係。