目录
这里给出您在投入 Debian 相关工作之前应当理解掌握的一些必备的预备知识。
在 Debian 社区中有这几类常见的角色:
注意,您不可能在一夜之间成为 Debian 开发者(DD),因为成为 DD 所需要的远不只是技术技巧。不过别因此而气馁,如果您的软件包对其他人有用,您可以当这个软件的软件包维护者,然后通过一位赞助者来上传这份软件,或者您可以申请成为 Debian 维护者。
还有,要成为 Debian 开发者不一定要创建新软件包。对已有软件做出贡献也是成为 Debian 开发者的理想途径。眼下正有很多软件包等着好的维护者来接手(参见 第 2.8 节 “贡献流程”)。
请参考下列文档来了解应当如何为 Debian 作出贡献:
为做好准备和 Debian 进行交互,请理解 Debian 的社会动力学:
我们都是志愿者。
友好的合作是我们前行的动力。
Debian 并不是一所学校,在这里没有所谓的老师会自动地注意到您。
Debian 一直在不断进步。
在这篇指南之后的部分中,我们只关注打包的技术方面。因此,请参考下面的文档来理解 Debian 的社会动力学:
这里给出一些技术上的建议,参考行事可以让您与其他维护者共同维护软件包时变得更加轻松有效,从而让 Debian 项目的输出成果最大化。
让您的软件包容易除错(debug)。
让您的软件包拥有良好的文档记录。
对软件进行除错(debug)通常会比编写初始可用的软件花费更多的时间。
请在阅读本指南的同时按需阅览下面这些 Debian 官方文档中的相关部分;这些文档提供的信息有助于创建质量优良的 Debian 软件包:
《Debian 政策手册》
“Debian 开发者参考”
如果本指南文档的内容与官方的 Debian 文档有所冲突,那么官方的那些总是对的。请使用 reportbug 工具向 debmake-doc 软件包报告问题。
这里有一些替代性的教程文档,您可以与本指南一起阅读进行参考:
“Debian 新维护者手册”(较旧)
“Debian 打包教程”
“Ubuntu 打包指南”(Ubuntu 基于 Debian。)
阅读这些教程时,您应当考虑使用 debmake 命令替代 dh_make 命令以获得更好的模板文件。
在您决定在某些公共场合问出您的问题之前,请先做好自己能做到的事情,例如,阅读能找到的文档:
要获取您所需要的信息,一种有效的方法是在网页搜索引擎中构建类似“关键字 site:lists.debian.org”这样具有限制条件的搜索字符串来限定搜索的域名。
制作一个小型测试用软件包也是了解打包细节的一个好办法。对当前已有的维护良好的软件包进行检查则是了解其他人如何制作软件包的最好方法。
如果您对打包仍然存在疑问,您可以使用以下方式与他人进行沟通:
特定语言的邮件列表。
如果您在做好功课后能在这些场合中合适地提出您的疑问的话,那些更有经验的 Debian 开发者会很愿意帮助您。
Debian 的开发是一个不断变动的目标。您在网上找到的某些信息可能是过时的、不正确的或者不适用的,使用时请留意。
请了解 Debian 仓库的当前状况。
因此,对已经存在于仓库内的软件包做出贡献是十分欢迎的(这也更有可能得到其他维护者的支持和协助上传)。
来自 devscripts 软件包的 wnpp-alert 命令可以检查已安装软件中需要接手或已被丢弃的软件包。
这里使用类 Python 伪代码,给出了向 Debian 贡献名为 program 的软件所走的贡献流程:
if exist_in_debian(program): if is_team_maintained(program): join_team(program) if is_orphaned(program) # maintainer: Debian QA Group adopt_it(program) elif is_RFA(program) # Request for Adoption adopt_it(program) else: if need_help(program): contact_maintainer(program) triaging_bugs(program) preparing_QA_or_NMU_uploads(program) else: leave_it(program) else: # new packages if not is_good_program(program): give_up_packaging(program) elif not is_distributable(program): give_up_packaging(program) else: # worth packaging if is_ITPed_by_others(program): if need_help(program): contact_ITPer_for_collaboration(program) else: leave_it_to_ITPer(program) else: # really new if is_applicable_team(program): join_team(program) if is_DFSG(program) and is_DFSG(dependency(program)): file_ITP(program, area="main") # This is Debian elif is_DFSG(program): file_ITP(program, area="contrib") # This is not Debian else: # non-DFSG file_ITP(program, area="non-free") # This is not Debian package_it_and_close_ITP(program)
其中:
对 exist_in_debian() 和 is_team_maintained(),需检查:
对 is_orphaned()、is_RFA() 和 is_ITPed_by_others(),需检查:
对于 is_good_program(),请检查:
对 is_it_DFSG(),及 is_its_dependency_DFSG(),请检查:
对 is_it_distributable(),请检查:
您或是需要填写并提交一份 ITP,或是需要“收养”一个软件包并开始为其工作。请见“Debian 开发者参考(Debian Developer's Reference)”文档:
新手贡献者和维护者可能想知道在开始向 Debian 进行贡献之前需要事先学习哪些知识。根据您个人的侧重点不同,下面有我的一些建议供您参考:
打包
翻译
文档
新手贡献者和维护者可能想知道从哪里开始向 Debian 进行贡献。根据您掌握的技能,下面有我的一些建议供您参考:
POSIX shell、Perl 和 Python 的技巧:
C 和 C++ 技能:
英语之外的技能:
文档技能:
这些活动应当能让您在各位 Debian 社区成员之间得到存在感,从而建立您的信誉与名气。
新手维护者应当避免打包具有潜在高度安全隐患的程序:
在积累足够的打包经验后,您可以再尝试打包这样的程序。