http://perlchina.org/advent/2009/PerlDevENV.html
from cnhackTNT =for advent_year 2009 =for advent_day 2 =for advent_title Perl 开发环境建议 =for advent_author cnhackTNT 尽管几乎所有的 Linux/Unix 发行版都附带了 Perl 和相关的模块,但作为一个 Perl 开发者,在构建自己的开发环境时,有些很好的习惯可以遵循,这样不会因 为安装和尝试各种模块的时候将你的系统搞脏,也不需要你动不动就祭出 root 大 神往系统目录里写文件等等。 P<2009-01|昨天> A<http://www.fayland.org|Fayland> 给我们介绍了非常方便的 M<local::lib> 模块,你当然可以按照他介绍的方法来管理需要自己额外安装的模 块,但对于想搭建自己得心应手的 Perl 开发环境的同学,我这里有另一种比较好 的建议。 首先,大部分 Linux/Unix 发行版(我不是歧视温道士系统,只是我个人不用它作 为开发环境)都是追求稳定的,A<http: //www.ubuntu.com|Ubunut> 也才升到 perl5.10 不久,而我使用的 A<http://www.gentoo.org|Gentoo>, 其上的 perl5.10 至今都还被 Mask 着呢。对于 Perl 来说,新的版本不但有 bug 的修 复,性能上的提升,还有很多新特性被加入进来,之前 A<http://agentzh.spaces.live.com|agentzh> 对 perl5.10 的某个版本有过测 试,结果是存在比较明显的内存泄漏,而换用最新开发版中的 5.11 版本,这些问 题就不存在了。而且生产环境证明,perl 最新的 devel 版本还是比较靠谱的,因 此对于 perl 开发者,我强烈建议您自己编译一套 A<http://www.cpan.org/src/perl-5.11.2.tar.gz|perl5.11.2>,这样做的好处主 要有几点: 1. 你可以享受到最新 perl 版本带来的一系列优势,包括 bug 的修复,新特性的 支持,性能的提升等。 2. 你可以根据需要调整你的 perl 编译参数,以达到关闭/开启某些特性和优化编 译的目的。 3. 你可以打造一个干净的 perl 版本,除了核心模块外,其他的模块你可以根据 项目需要来安装,批量部署的时候(系统体系相同的情况下),大部分时候你只需 要把自己指定的这个 perl 版本的目录整个 COPY 过去就OK了。 4. 与系统自带的 perl 完全独立,你对自己编译的 perl 做的动作完全不会影响 到系统自带的 perl,这样你的系统不会因为自带的 perl 或其模块被改动,而在 升级的时候碰到问题。 5. 你可以在系统自带的 perl 和自己编译的 perl 间自由切换 :-). 那么,接下来让我们看看如何来打造一个自己的 Perl 开发环境吧! 首先,我们需要下载最新的 Perl 源码,你可以选择同步 perl.org 上 A<http://perl5.git.perl.org/perl.git|git 仓库中的 Perl 源码>,也可以选择 使用官方打包好的 A<http://www.cpan.org/src/perl-5.11.2.tar.gz|5.11.2 版 本>。我们以后者为例: =begin pre $ wget http://www.cpan.org/src/perl-5.11.2.tar.gz $ tar xzvf perl-5.11.2.tar.gz $ cd perl-5.11.2 =end pre 你可以选择直接运行 Configure 脚本来交互式地完成这一过程,当然在你比较熟 悉这一过程的情况下,也可以直接给出你的配置参数免得浪费时间: =begin pre $ Configure -Dusedevel -Dprefix=$HOME/perl -des =end pre 以上参数的意思分别是: =begin pre -Dusedevel 使用开发版本的 perl,因为我们这个是 devel 版本,所以得加上这个 -Dprefix=$HOME/perl 指定我们自己编译的这个 perl 将被安装到当前用户家目录 下的 perl 目录中 -des 指定其他配置参数采用 perl 默认配置 =end pre 当然就像之前所说的,你可以根据自己的需求来对编译的 perl 做一些优化和定 制,比如要不要 thread, 要不要大文件支持...等等,具体可参看源码目录内的 INSTALL 和 README 文档,我自己是加上了 “-fomit-frame-pointer” 的 ccflags 参数。 等配置完成后,就可以 make, make test, make install 了: =begin pre $ make $ make test $ make install =end pre 一般来说,整个配置编译过程还是会比较顺利的。 恭喜!至此,属于你的 perl 已经编译安装完成了,那下一步就让我们来实现它和 系统自带 perl 的自由切换吧! 实现非常简单,请编辑你的 B<~/.bashrc> 文件, 加入: =begin pre alias devperl='PATH=${PATH_NORMAL:-$PATH};export PATH_NORMAL=$PATH;export PATH=/home/dev/perl/bin:$PATH;echo -e "\nPATH=$PATH\nPATH_NORMAL=$PATH_NORMAL\nDevperl!\n"' alias sysperl='PATH=${PATH_NORMAL:-$PATH};export PATH=$PATH;unset PATH_NORMAL;echo -e "\nPATH=$PATH\nSysperl!\n"' =end pre 这样,在默认情况下,你使用的都会是系统的 perl, 而一旦你想开始做些 perl 开发,或者通过 cpan 安装新模块,便可以在命令行敲入 B<devperl> 命令然后回 车,立马就切换过去了。此时你无论运行 cpan, perl 或是 perldoc, 调用的都是 你自己编译的 perl 中的相应程序,而且这时通过 cpan 安装的模块也通通会保存 到 B<~/perl> 下的相应目录里,不会弄乱你的系统。 想回到系统的 perl 怎么办?敲入 B<sysperl> 就OK了。 一般编译安装完 perl 后,通常我第一件事就是升级 M<CPAN> 模块,并安装一些 常用的其他模块。 =begin pre $ devperl $ cpan Bundle::CPAN =end pre 在你编译的 perl 中,用 CPAN 来安装模块是我们强烈建议的方式,大多数情况 下,CPAN 会工作得很顺利,偶尔会碰到一些类似依赖顺序,外部库和 make test 失败的问题,但是只要仔细查看出错信息,解决起来还是很顺手的。 A<http://www.enlightenedperl.org|Enlightened Perl> 的项目之一 M<Task::Kensho> 帮你打包好了目前 CPAN TOP100 模块中最常用的一些模块,也 包括了昨天 Fayland 所说到的 M<local::lib>, 强烈建议 perl 开发者通过安装 M<Task::Kensho> 来获得这些模块,当然由于它包含的模块比较多,可能需要花一 些时间,如果不想全部安装它们,你可以看看 M<Task::Kensho> 的 pod 文档,选 择自己感兴趣的模块加到你的 perl 中。 在完成这些之后,你可能需要挑一个顺手的编辑器,VIM/Emacs 可能会是大部分 linux 开发的首选,但我想提到的是基于 Eclipse 的 A<http://www.epic-ide.org|E-P-I-C> 这个 Perl IDE 也是非常不错的。此外, 我们还有目前很热的 A<http://padre.perlide.org|Padre>, 一款用 Perl 开发的 IDE,功能和可用性也非常不错,相信之后 Fayland 会做介绍。 关于 VIM 上做 Perl 开发,来自台湾的 A<http://c9s.blogspot.com/search/label/Vim|c9s> 有很多不错的技巧分享(需 翻墙)。 ====================== 我们还在寻求更多的文章支持 谢谢 -- Fayland Lam // http://www.fayland.org/ --~--~---------~--~----~------------~-------~--~----~ 您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
