在 AWS 上安裝 perl 模組

這兩天手邊較閒,便想說幫公司撰寫隻簡單的 perl script ,搭配方便好用的 HipChat ,用來提醒當週的值日生,此舉立意甚好,自動化腳本本來就該是程式人追求的終極目標嘛!(笑)

所撰寫的腳本因為利用了一些 perl module,像是 DateTime, Text::CSV 這些模組,因此直覺的在本機上透過 CPAN 來安裝這些模組,以解決繁複的套件相依性的問題,一切都是這麼的美好、順利,直到當要 porting 到 AWS 的機器上...

一如往常的,執行起在本機端開發時的指令流程,採用 cpan 的 shell 環境指令安裝,如下:

cpan[1]> install Text::CSV
Fetching with LWP:
http://httpupdate35.cpanel.net/CPAN/authors/01mailrc.txt.gz
Reading '/home/starktech/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
http://httpupdate35.cpanel.net/CPAN/modules/02packages.details.txt.gz
Reading '/home/starktech/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Tue, 07 Oct 2014 07:53:28 GMT
..............
  New CPAN.pm version (v2.05) available.
  [Currently running version is v2.00]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


.................................killed

但是不管嘗試幾遍,安裝哪個模組,所有的程序都會被系統給 kill 掉,完全無法安裝任何模組...(這樣我辛苦寫的 script 是要怎麼用啦!)

經過了 Google 大神一番的幫助,在閱讀過一些討論串後,發掘其實這是由於系統的資源不足所導至的!公司因為要省錢,所以租用的也是 AWS 上最不給力的 EC2 T1.Micro 方案,運算與儲存資源受到相當的限縮。而 CPAN 在安裝模組的過程中所需要的記憶體資源算是相當的龐大,所以在這類平台或是運算資源有所限制的機器上,這個方法是行不通的!

那,該怎麼辦呢?這就是為什麼 cpanminus 誕生的原因了!

使用方式

  cpanm Test::More                                          # 安裝 Test::More 模組
  cpanm MIYAGAWA/Plack-0.99_05.tar.gz                       # 帶版號的 Tarball 檔名
  cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz           # 從網路上的 Tarball 檔安裝
  cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz            # 從本機端的 Tarball 檔案安裝
  cpanm --interactive Task::Kensho                          # 互動式地安裝過程
  cpanm .                                                   # 從當前資料夾安裝

之後無論是在自己的 laptop 上開發,或是 porting 到其他地方,都用這個 cpanm 幫你搞定吧!

comments powered by Disqus