目录
这里给出你在投入 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 命令以获得更好的模板文件。 |
在你决定在某些公共场合问出你的问题之前,请先做好自己应做的事,例如,查看这些文档与信息:
Your desired information can be found effectively by using the well-formed search string such as “keyword site:lists.debian.org” to limit the search domain of the web search engine.
制作一个小型测试用软件包也是了解打包细节的一个好办法。对当前已有的维护良好的软件包进行检查则是了解其他人如何制作软件包的最好方法。
如果你对打包仍然存在疑问,你可以使用以下方式与他人进行沟通:
特定语言的邮件列表。
如果你在做好功课后能在这些场合中合适地提出你的疑问的话,那些更有经验的 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)”文档:
The novice contributor and maintainer may wonder what to learn to start your contribution to Debian. Here are my suggestions depending on your focus:
Packaging
Translation
Documentation
The novice contributor and maintainer may wonder where to start your contribution to Debian. Here are my suggestions depending on your skills:
POSIX shell, Perl, and Python skills:
C and C++ skills:
Non-English skills:
Documentation skills:
These activities should give you good exposure to the other Debian people to establish your credibility.
新手维护者应当避免打包具有潜在高度安全隐患的程序:
在积累足够的打包经验后,你可以再尝试打包这样的程序。