目录
这里给出您在投入 Debian 相关工作之前应当理解掌握的一些必备的预备知识。
在 Debian 社区中有这几类常见的角色:
Please note that you can’t become an official Debian Developer (DD) overnight, as it requires more than just technical skills. Don’t be discouraged by this. If your work is useful to others, you can still upload your package either as a maintainer through a sponsor or as a Debian Maintainer.
Please note that you don’t need to create new packages to become an official Debian Developer. Contributing to existing packages can also provide a path to becoming an official Debian Developer. There are many packages waiting for good maintainers (see “"`第 3.8 节 “贡献流程””`").
请参考下列文档来了解应当如何为 Debian 作出贡献:
为做好准备和 Debian 进行交互,请理解 Debian 的社会动力学:
我们都是志愿者。
友好的合作是我们前行的动力。
Debian 并不是一所学校,在这里没有所谓的老师会自动地注意到您。
Debian 一直在不断进步。
在这篇指南之后的部分中,我们只关注打包的技术方面。因此,请参考下面的文档来理解 Debian 的社会动力学:
这里给出一些技术上的建议,参考行事可以让您与其他维护者共同维护软件包时变得更加轻松有效,从而让 Debian 项目的输出成果最大化。
让您的软件包容易除错(debug)。
让您的软件包拥有良好的文档记录。
![]() | 注意 |
---|---|
对软件进行除错(debug)通常会比编写初始可用的软件花费更多的时间。 |
即使是开发系统,在不稳定(unstable)套件下运行基本系统也是不明智的。
![]() | 注意 |
---|---|
Advanced package development activities, such as testing full Desktop systems, network daemons, and system installer packages, should use the unstable suite running under “virtualization”. |
Please make yourself ready to read the pertinent part of the latest Debian documentation to generate perfect Debian packages:
“Debian 政策手册”
“Debian 开发者参考”
“Debian 维护者指南”——即本指南
All these documents are published on https://www.debian.org using the unstable suite versions of corresponding Debian packages. If you wish to have local access to all these documents from your base system, please consider using techniques such as “apt-pinning” and “chroot”.
如果本指南文档的内容与官方的 Debian 文档有所冲突,那么官方的那些总是对的。请使用 reportbug 工具向 debmake-doc 软件包报告问题。
这里有一些替代性的教程文档,您可以与本指南一起阅读进行参考:
“《Debian 打包教程》”
“Ubuntu 打包指南”(Ubuntu 基于 Debian。)
“Debian 新维护者指南”(本文档的前身,已弃用)
![]() | 提示 |
---|---|
When reading these, you may consider using the debmake command in place of the dh_make command. |
Before deciding to ask your question in a public forum, please do your part by reading the relevant documentation:
You can find your desired information 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.
Creating a small test package is a good way to learn the details of packaging. Inspecting existing well-maintained packages is the best way to learn how other people make packages.
如果您对打包仍然存在疑问,您可以使用以下方式与他人进行沟通:
特定语言的邮件列表。
More experienced Debian developers will gladly help you if you ask properly after making the required efforts.
![]() | 小心 |
---|---|
Debian development is a moving target. Some information found on the web may be outdated, incorrect, or non-applicable. Please use such information carefully. |
请了解 Debian 仓库的当前状况。
因此,对已经存在于仓库内的软件包做出贡献是十分欢迎的(这也更有可能得到其他维护者的支持和协助上传)。
![]() | 提示 |
---|---|
The wnpp-alert command from the devscripts package can check for installed packages that are up for adoption or orphaned. |
![]() | 提示 |
---|---|
The how-can-i-help package can show opportunities for contributing to Debian based 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 社区成员之间得到存在感,从而建立您的信誉与名气。
新手维护者应当避免打包具有潜在高度安全隐患的程序:
在积累足够的打包经验后,您可以再尝试打包这样的程序。