學 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 應該都不會需要用到. 🙂