Table of Contents
这里给出您在投入 Debian 相关工作之前应当理解掌握的一些必备的预备知识。
在 Debian 社区中有这几类常见的角色:
注意,您不可能在一夜之间成为 Debian 开发者(DD),因为成为 DD 所需要的远不只是技术技巧。不过别因此而气馁,如果您的软件包对其他人有用,您可以当这个软件的软件包维护者,然后通过一位赞助者来上传这份软件,或者您可以申请成为 Debian 维护者。
Please note that you do not need to create any new packages to become an official Debian Developer. Contributing to the existing packages can provide a path to becoming an official Debian Developer too. There are many packages waiting for good maintainers (see “"`Section 3.8, “贡献流程””`").
请参考下列文档来了解应当如何为 Debian 作出贡献:
为做好准备和 Debian 进行交互,请理解 Debian 的社会动力学:
我们都是志愿者。
友好的合作是我们前行的动力。
Debian 并不是一所学校,在这里没有所谓的老师会自动地注意到您。
Debian 一直在不断进步。
在这篇指南之后的部分中,我们只关注打包的技术方面。因此,请参考下面的文档来理解 Debian 的社会动力学:
这里给出一些技术上的建议,参考行事可以让您与其他维护者共同维护软件包时变得更加轻松有效,从而让 Debian 项目的输出成果最大化。
让您的软件包容易除错(debug)。
让您的软件包拥有良好的文档记录。
Note | |
---|---|
对软件进行除错(debug)通常会比编写初始可用的软件花费更多的时间。 |
It is unwise to run your base system under the unstable suite even for the development system.
Note | |
---|---|
Advanced package development activities such as testing of full Desktop systems, network daemons, and system installer packages, should use unstable suite running under the “virtualization”. |
Please make yourself ready to read the pertinent part of the latest Debian documentation to generate perfect Debian packages:
“Debian Policy Manual”
“Debian Developer’s Reference”
“Guide for Debian Maintainers” — this guide
All these documents are published to https://iwawocd.cewmufwd.tk using the unstable suite versions of corresponding Debian packages. If you wish to have local accesses to all these documents from your base system, please consider to use techniques such as “apt-pinning” and “chroot”.
如果本指南文档的内容与官方的 Debian 文档有所冲突,那么官方的那些总是对的。请使用 reportbug 工具向 debmake-doc 软件包报告问题。
这里有一些替代性的教程文档,您可以与本指南一起阅读进行参考:
“Debian Packaging Tutorial”
“Ubuntu Packaging Guide” (Ubuntu is Debian based.)
“Debian New Maintainers' Guide” (predecessor of this tutorial, deprecated)
Tip | |
---|---|
When reading these, you may consider using the debmake command in place of the dh_make command. |
在您决定在某些公共场合问出您的问题之前,请先做好自己能做到的事情,例如,阅读能找到的文档:
Your desired information can be found effectively by using a well-formed search string such as “keyword site:lists.debian.org” to limit the search domain of the web search engine.
制作一个小型测试用软件包也是了解打包细节的一个好办法。对当前已有的维护良好的软件包进行检查则是了解其他人如何制作软件包的最好方法。
如果您对打包仍然存在疑问,您可以使用以下方式与他人进行沟通:
特定语言的邮件列表。
如果您在做好功课后能在这些场合中合适地提出您的疑问的话,那些更有经验的 Debian 开发者会很愿意帮助您。
Caution | |
---|---|
Debian development is a moving target. Some information found on the web may be outdated, incorrect, and non-applicable. Please use them carefully. |
请了解 Debian 仓库的当前状况。
因此,对已经存在于仓库内的软件包做出贡献是十分欢迎的(这也更有可能得到其他维护者的支持和协助上传)。
Tip | |
---|---|
来自 devscripts 软件包的 wnpp-alert 命令可以检查已安装软件中需要接手或已被丢弃的软件包。 |
Tip | |
---|---|
The how-can-i-help package can show opportunities for contributing to Debian on packages installed locally. |
这里使用类 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(),请检查:
You either need to file an ITP or adopt a package to start working on it. See the “Debian Developer’s Reference”:
新手贡献者和维护者可能想知道在开始向 Debian 进行贡献之前需要事先学习哪些知识。根据您个人的侧重点不同,下面有我的一些建议供您参考:
打包
翻译
文档
新手贡献者和维护者可能想知道从哪里开始向 Debian 进行贡献。根据您掌握的技能,下面有我的一些建议供您参考:
POSIX shell、Perl 和 Python 的技巧:
C 和 C++ 技能:
英语之外的技能:
文档技能:
这些活动应当能让您在各位 Debian 社区成员之间得到存在感,从而建立您的信誉与名气。
新手维护者应当避免打包具有潜在高度安全隐患的程序:
在积累足够的打包经验后,您可以再尝试打包这样的程序。