[文章]Perl与MandrakeLinux

[文章]Perl与MandrakeLinux

[文章]Perl与MandrakeLinux
译者/作者:klaus
出处:中国Perl协会 FPC(Foundation of Perlchina)
作者:Mark Stosberg
原名:Perl and Mandrakelinux
原文:http://www.perl.com/pub/a/2005/02/24/mandrakelinux.html
发表:February 24, 2005
请保护作者的著作权,维护作者劳动的结晶。

得分:0分 [查看文评]

Perl 程序员们选择 Mandrakelinux 作为他们的操作系统是有他们特殊理由的。 Mandrakelinux 的许多发行版都使用 Perl 作为其附加程序的开发语言,包括大部分的 Mandrakelinux 控制台。我向 Mandrakelinux 提出要求,请求采访一位他们之间最好的 Perl 开发者,于是他们介绍了Rafael Garcia-Suarez 。Rafael 除了是 Mandrakelinux 的 Perl 开发人员之外,还是 Perl 5.10 的 pumpking(发布人)。Rafael 回答了我关于 Perl 与 GUI 编程的一些问题,并且还谈了他是如何在正常工作与 pumpking 的身份之间平衡的。

O’Reilly Network: 简单介绍一下你为 Mandrakelinux 所做的一些和 Perl 有关的工作吧。

Rafael: 我的主要职责是维护和加强 urpmi 这个命令行工具(以及它的 GUI 版本 rpmdrake),它是 Mandrakelinux 系统上的 debian apt 或者说 Fedora 上的 yum。它的功能是通过获取有依赖关系的 RPM 来安装或升级它们。

这项工作实际上涉及到了所有和安装有关的问题,所以我也参与 Mandrakelinux 的安装程序的升级的工作。这些全都是用 Perl 写的。

除了前面这些我还在维护 perl 本身的 RPM,以及 CPAN 上一些和 Mandrake 有关的模块。

ORN:采用 Perl 来做图形界面,是一个不太常见的选择,但是 Mandrakelinux 却选择 Perl 来写了超过五十个图形界面的程序。其中许多都是 Mandrakelinux 特有的,发行版附加程序。你能不能谈谈为什么 Mandrakelinux 要用 Perl 来完成这个重要的工作?

Rafael:并不是所有工具都是用 Perl 写的。不过始终使用同一种语言有利于所有工具共享和代码重用,像 perl/rpmlib 还有图形工具箱,OS 安装程序还和 urpmi 和 rpmdrake 都共享了一些代码。是不是采用一种语言取决于开发的速度以及 debug 的难度。在我来 Mandrakesoft 之前,开发队伍也曾经尝试过痛苦的用 C 语言来写 rpmdrake 。选择 Perl 是很自然的,因为它已经有一些很好的特性可以完成这项工作。

编者注:最近, Linspire 发行版也采用的动态语言来开发图形界面程序,并快速的将它推向了市场。
它的 Lsongs 和 Lphoto 使用的是 Python。

ORN: 能否举个例子说说 Perl 怎样显著缩短了开发时间?

Rafael: 我觉得使用脚本语言基本上都能缩短开发时间,因为使用它们之后,写代码/编译/测试/debug 这个循环变得更快了。 而 Perl 由于拥有大量的 CPAN 模块而尤其有用。 比如在 Devel::Trace 模式下运行 OS 安装程序会生成大量的 log 文件,在追踪那些很隐蔽的 bug 的时候极其有效。如果用 C 的话就没法做到,只好到处添加 printf 然后反复的重新编译整个程序。

ORN: Mandrakelinux 使用什么工具来自动测试图形界面的 Perl 程序呢?

Rafael: 嗯?你是新手(interns)吧?

严肃的讲,实际上没有什么针对 GUI 程序的自动测试。对这种程序的自动测试会碰到有一些很棘手的问题,因为它们常常会修改系统的配置或是需要某些特定的硬件(更不要说 OS 安装程序的 GUI)

不过,我一直希望将来能够写出更多的测试程序,比如对 urmpi 的一套完整测试就非常有用。

ORN: 那些 Perl 社区的人(尤其是那些提交补丁的人)对 Perl 开发的 Mandrake 工具有何回应呢?

Rafael: 那些提交补丁的人往往是希望能够改善他们所用的发行版的人,即使他们是来自 Perl 社区。他们是以一个 Mandrakelinux 用户的身分来参与的。这就是为什么这些工具在 MDK 之外的地方很少能见到的原因。

另一个原因是 Mandrakesoft 从来没有想过要把什么 library 是 MDK 特有的,而什么不是的分割开,然后写出完整的文档:这些都需要很多时间,没有直接的回报,而且常常不能在期限内完成。

不过储存这些工具的源码的 CVS 是公开的,有一些开发者(如 Mandrakesoft 的员工)有管理的权限。我们现在需要更多的人了解这一点。

ORN:如果有 Perl 程序员愿意为 Mandrakelinux 做些贡献,你对他们有什么建议?

Rafael:和许多开源项目一样,如果你想知道它是怎么开发的以及参与到开发当中去,你就使用最新的版本,在 Mandrakelinux 当中叫做”cooker”,最新的开发版。订阅 mail list,在 CVS 里 check out,获取一个 Bugzilla 帐号,多向别人请教。学习怎么创建 RPM 包也是有用的,至少学会把那些工具打成 RPM 包。很多问题在 wiki 中都有解答,可以看看这个页面:http://qa.mandrakesoft.com/twiki/bin/view/Main/HowTo

ORN:你用 Perl 做为系统的核心组件,然后无数的工具都依赖它,那能说说你在维护它们的过程中你碰到的最大的挑战吗?

Rafael:呃,这个要说的话,有两种:空间上的和时间上的。

首先,空间上,你需要把标准的 Perl 发行版分割称更小的包(”perl-base”用于基本组件,”perl”用于其他组件,”perl-devel”用于开发组件,而”perl-doc” 则用于它自己以及其他的文档),这个分割不是随意的。当你维护向 urpmi 这样的系统管理基础组件的时候,你不会想要太多的 Perl 模块,甚至很多核心模块也不需要。(安装程序也一样,全都要的话安装 CD 就满了)所以 perl-base 只包括了 urmpi 需要的模块,其他的则包含在 perl 里面。

ORN:人们常认为 perl 用作图形编程的时候会很慢。Mandrakelinux 如何解决这个问题的呢?

Rafael:我觉得 Perl 本身不是这样,只有少数的 Perl 程序才会这样! MDK 工具使用的是 perl-Gtk(因为这些工具开始开发的时候Qt还不够成熟),由于它非常接近 C 的库,所以效率完全可以接受。

你知道 Frozen Bubble 这个游戏吧?它是 Mandrakelinux 以前的一位成员用 Perl 写的,它一点也不慢。人们听说 Frozen Bubble 和 MDK 是 Perl 所写的时候往往很吃惊,因为他们完全没有感觉到那种所谓的由一般脚本语言所写的 GUI 常有的缓慢速度。

实际上 MDK 的速度瓶颈其他程序一样,即不是在图形显示方面,而是在数据处理方面。

ORN:你最近成为 Perl 5.10 的 pumpking,你怎么处理这个和你的日常工作之间的关系?

Rafael:在此之前我已经参加了很多 Perl 5 的开放工作,花时间审查和提交补丁等等。我一般在晚上或周末做这些工作。而我现在白天也可以做这些工作了,因为 Mandrakesoft 允许它的开发者们去从事一些开源项目。然而,应该说我的日常工作本身就有一点特殊,和一般的私有项目不同,我不断地和这个社区的成员接触,通过 mail,IRC或其他媒介,甚至有时候面对面的交流。而有时候我业余时间也会工作...总之日常工作和这些开源项目的界面被模糊了,反正都是要完成的。要说区别吗,唯一区别是工作总会有个最后期限,而他们则为此付给我工资。

ORN:有没有喜欢的 CPAN 模块向大家推荐?

Rafael:好像没有什么吧,我一般都是看mail list,mongers,use.perl那些地方,那里总有些聪明的家伙会发现很好的模块,然后我再去学的。我常用 B::Concise模块,但是我想对 perl 内部实现不太熟悉的人可能不会用到它,还有 encoding::warnings模块,最近我发现它对 Unicode 相关的 debugging 非常有用。
这个。。不就是...
这个。。不就是wiki上的吗。。