學 Perl 一定要會用 CPAN(Comprehensive Perl Archive Network), CPAN 有太多套件可以使用. 但是在 Debian 上, 要安裝 CPAN 等套件, 想到就頭痛, 套件都不知道裝到哪邊去, 然後就隨便亂用, 也不知道安裝的是什麼東西, 移機的時後就會知道痛了, 還是應該好好研究研究...
找到下述幾篇文章蠻重要的:
- Debian Perl Policy - 這篇一定要看, 內容很短, 很快就看完囉~
- Building Debian packages of Perl modules
除了 Debian 預設 deb 的 Package 外, 有很多已經包好的 Packages 可以直接安裝使用:
- debian.pkgs.cpan.org -- debified CPAN packages
- 可以考慮加 "deb http://debian.pkgs.cpan.org/debian unstable main" 此行, 進 /etc/apt/sources.list, 就可以省不少事~
- dh-make-perl --build --cpan <module_name> # To fully build CPAN modules into debian in one step use the following wrapper.
再來, 看看 CPAN 標準安裝法:
CPAN 安裝的前置設定
- $ sudo cpan # 設定 cpan 一些參數, 會問以下的問題:
- 遇到 PREFIX=~/perl, You Choose [INSTALLDIRS=site] 時, 若有特別想指定, 就寫 /usr, 不然就跳過.
- (PS: perl -V:prefix 可以查現在 prefix 是哪個(等同 INSTALLDIRS=site), Debian 預設是 /usr)
- 再來就是設定要從哪個站抓 CPAN Package 就可以使用了
於 Local 要安裝 CPAN Package 的方法:
- 先依上述設好 CPAN 後, 下述方法挑其一使用即可:
- # cpan> install Package
- sudo perl -MCPAN -e 'CPAN::Shell->install("Text::Wrap")'
- cpan -i Text::Wrap
抓取 tar.gz 於 Local 安裝 Perl Modlues
- # cd /usr/local
- # tar zxvf filename.tar.gz
- # cd filename
- # perl Makefile.PL
- # make install
查看/修改 CPAN 設定
- cpan> o conf
- 修改設定 vim /etc/perl/CPAN/Config.pm
CPAN Upgrade 升級
- sudo perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
CPAN 更新 index
- reload index
以下是 Debian Perl 安裝設定的標準路徑, 詳可見 Debian Perl Policy - Perl Packaging, 主要分下面三種(site/vendor/core):
site (於 local 直接 "# cpan> install Package 安裝" 或 "sudo perl -MCPAN -e 'CPAN::Shell->install("Text::Wrap")' 安裝", 會往下述路徑裝)
- Modules installed by the local administrator for the current version of Perl
- /usr/local/lib/perl/version
- /usr/local/share/perl/version
- Where version indicates the current Perl version ($Config{version}).
vendor (Debian Package 直接安裝會於此處, ex: dpkg -L libwww-mechanize-perl)
- Packaged modules
- /usr/lib/perl5
- /usr/share/perl5
core
- Modules included in the core Perl distribution.
- /usr/lib/perl/version
- /usr/share/perl/version
程式安裝路徑
- /usr/local/bin
文件安裝路徑
- 程式說明文件: /usr/share/man/man1 (檔案命名: Module_name.1.gz, 結尾要有 ".1.")
- Modules 說明文件: /usr/share/man/man3 (檔案命名: Module_name.3perl.gz, 結尾要有 ".3perl.")
將 Perl Module 包成 Debian Package
- Module Packages 命名規則: Foo::Bar => libfoo-bar-perl
- 其它詳細可見: Debian Perl Policy - Packaged Modules
我的安裝流程
- apt-cache search cpan package_name # 能用 deb 裝, 就用 deb 的
- apt 找不到時, 進 cpan>, 使用 cpan> install package_name 來裝
- cpan> 裝不起來時, 再到 cpan 網站上抓 package.tar.gz, 用 perl Makefile.PL; make install 安裝
註: 感謝 c9s 的建議: 建議使用 CPANPLUS, 而 CPAN / deb 應該都不會需要用到. 🙂
個人覺得 debian 上 perl 和 cpan 的預設配置相當簡單,如果不需要用到 c/c++ lib 的 module 直接用 cpan 安裝都很容易裝好,集中使用 cpan 裝的話備份起來輕鬆得多 :p
嗯嗯, 只是我之前裝, 每次看起來都是裝在自己的目錄下, 一直不知道怎麼裝在公用目錄, 後來查查才知道, 所以順便留下紀錄囉 🙂
這篇好,大推。
可愛用 CPANPLUS.
對於 dependency 處理比 CPAN 好得多,在 perl5.10 已經預設附帶 CPANPLUS 了。
另外,有時透過 deb 裝,而後又用 CPANPLUS 裝模組,可能會導致版本相依性問題。
喔喔, 原來 CPANPLUS 是處理 dependency, 所以應該是要用 CPANPLUS, 不要再透過 deb 會比較保險.
感恩. Orz..
結果最近 miyagawa 寫了 cpanm 超好用的,完全不用設定! XDDDDD
所以我把文件裡頭安裝步驟的部份更新了。 😉
嗯嗯, 感謝通知~ 😀
聽起來好像很具體