2008-09-27 151 views
11

似乎Perl的大多數安裝程序都圍繞安裝Perl模塊而不是應用程序。 ExtUtils :: MakeMaker和Module :: Build等模塊非常適合模塊,但需要一些額外的Web Apps工作。什麼是安裝Perl Web應用程序的最佳系統?

理想情況下是很好能夠做到從倉庫中籤出源後,將以下內容:

  • 都有缺失的依賴檢測
  • 下載,然後從CPAN安裝依賴
  • 運行一個命令將源「構建」爲最終狀態(執行本地環境所需的任何源解析或配置)。
  • 運行命令將構建的文件安裝到適當的位置。不僅是perl模塊,還有像template(.tt)文件,CGI腳本,JS和應該可以通過web訪問的圖像文件。
  • 確保在安裝的文件(如果需要的話還有SELinux上下文)上設置了適當的權限。

現在我們有一個基於Module :: Build的系統,可以完成大部分工作。這項工作是由我的同事完成的,他的同事當時正在學習使用Module :: Build,我們希望就推廣我們的解決方案提供一些建議,因爲它現在是相當具體的應用程序。特別是,我們的系統要求我們手動安裝依賴關係(儘管它檢測到它們)。

是否有您使用過的特別系統特別成功?你是否需要編寫一個基於Module :: BuildExtUtils :: MakeMaker的安裝程序,這對您的應用程序特別有用,或者是更通用的安裝程序?

編輯:要回答以下Brian的問題:

  • 我們可以登錄到機器
  • 我們不必機器
  • 機器都(表面上)相同的建立root訪問權限啓用了SELinux的RHEL5
  • 目前,安裝機器的人員僅來自我們團隊的程序員,我們的源代碼並不向公衆開放。但是,可以想象,我們的源代碼最終可以安裝在我們組織的其他人的機器上,由程序員或系統人員安裝。
  • 雖然我們希望可以選擇使用分佈式存檔(請參閱上文),但我們通過檢出存儲庫來進行安裝。

回答

6

安裝網絡應用程序有什麼限制?你能登錄到機器嗎?所有的機器都運行相同的東西嗎?人們是安裝網絡應用程序的同事還是來自普通大衆的隨機人員?安裝這些系統管理員,程序員,網絡管理員或其他人員的人員是?你是通過分發一個存檔還是從源代碼控制檢查來安裝的?

對於我的大部分東西,其中涉及系統管理員熟悉安裝在控制環境中的Perl,我只使用MakeMaker。如果你知道一些關於MakeMaker的信息,很容易就可以完成你列出的所有事情。如果你想更多地瞭解這一點,請提出另一個問題。 ;)Module::Build是一樣容易,但如果你還不喜歡使用MakeMaker的路要走。

Module::Build如果人們對命令行和安裝軟件有一定程度的瞭解,將會是處理大量不同情況的好方法。 Module::Build您將擁有很大的靈活性,但也有更多的工作。而且,cpan工具(與Perl一起提供)可以從當前目錄安裝併爲您處理相關性。只要告訴它來安裝當前目錄:

$ cpan . 

如果你只需要安裝在單一platorm,你可能有一個更容易的時間在原生格式製作包裝。您甚至可以讓Module::Build爲您製作該軟件包,以便開發人員具有Module::Build的靈活性,但安裝人員可以輕鬆實現本地進程。堅持Module::Build也意味着您可以從一個構建工具爲不同的平臺創建不同的包。

如果安裝Web應用程序的人對命令行,CPAN和其他東西不瞭解,那麼您可能希望使用不會讓他們感到恐慌的安裝程序或安裝程序,或者讓他們考慮將要執行的操作並且可以自動準確地向您報告問題。 Dave指出,使用真正的CPAN鏡像總能讓你獲得最新版本的模塊,但你也可以製作你自己的「僞造」CPAN鏡像,並且使用你想要的發行版本,並且安裝正常的CPAN工具。那。對於我們的客戶,我們製作了「CPAN CD」(儘管拇指驅動器現在也很好)。通過一個簡單的「跑我」腳本,所有的東西都可以安裝在他們需要的版本中。例如,請參閱我的http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007「>如果您對此感興趣,請自己製作CPAN談話。再次,當您考慮到這一點時,請考慮觀衆這不是你要交給公衆的東西。

祝你好運:)

3

我建議你認真考慮RPM這樣的包系統來做到這一點。即使你在Windows上運行,我也會考慮使用RPM和cygwin來進行安裝。您甚至可以設置一個yum或apt存儲庫來將軟件包交付給遠程系統。

如果您正在爲運行任意數量的操作系統和發行版的客戶尋找常規安裝程序,那麼問題就變得更加困難。

6

建議RPM的答案絕對是一個很好的答案。使用你的系統的包管理器絕對可以讓你的生活更輕鬆。但是,這可能意味着您還需要打包一堆其他Perl模塊。

你也可以看看Shipwright。這是一個用於打包應用程序及其所有Perl模塊依賴關係的基於Perl的工具。這還爲時尚早,但看起來很有希望。

就安裝依賴關係而言,簡單地打包一堆tarball然後讓你使用基於Module :: Build的解決方案安裝它們並不困難。你應該看看pip,這使得從壓縮包安裝模塊非常簡單。您可以將其與您的代碼庫打包,並從您自己的安裝程序中調用它來處理代碼。

我懷疑依靠CPAN是否是一個好主意。 CPAN shell總是獲取最新版本的發行版,而不是特定的版本。如果您對確保可重複安裝感興趣,它不是正確的工具。

2

看看PAR

Jonathan Rockway作爲一本關於在他的書中使用Catalyst的小部分。

相關問題