Chapter 2. 预备知识

    在 Debian 社区中有这几类常见的角色:

    • 上游作者(upstream author):程序的原始作者。
    • 上游维护者(upstream maintainer):目前在上游维护程序代码的人。
    • 软件包维护者(maintainer):制作并维护该程序 Debian 软件包的人。
    • 赞助者(sponsor):帮助维护者上传软件包到 Debian 官方仓库的人(在通过内容检查之后)。
    • 导师(mentor):帮助新手维护者熟悉和深入打包的人。
    • Debian 开发者(DD, Debian Developer):Debian 社区的官方成员。DD 拥有向 Debian 官方仓库上传的全部权限。
    • Debian 维护者(Debian Maintainer, DM):拥有对 Debian 官方仓库部分上传权限的人。

    注意,您不可能在一夜之间成为 Debian 开发者(DD),因为成为 DD 所需要的远不只是技术技巧。不过别因此而气馁,如果您的软件包对其他人有用,您可以当这个软件的软件包维护者,然后通过一位赞助者来上传这份软件,或者您可以申请成为 Debian 维护者

    还有,要成为 Debian 开发者不一定要创建新软件包。对已有软件做出贡献也是成为 Debian 开发者的理想途径。眼下正有很多软件包等着好的维护者来接手(参见 Section 2.8, “贡献流程”)。

    2.2. 如何做出贡献

    请参考下列文档来了解应当如何为 Debian 作出贡献:

    2.3. Debian 的社会驱动力

    为做好准备和 Debian 进行交互,请理解 Debian 的社会动力学:

    • 我们都是志愿者。

      • 任何人都不能把事情强加给他人。
      • 您应该主动地做自己想做的事情。
    • 友好的合作是我们前行的动力。

      • 您的贡献不应致使他人增加负担。
      • 只有当别人欣赏和感激您的贡献时,它才有真正的价值。
    • Debian 并不是一所学校,在这里没有所谓的老师会自动地注意到您。

      • 您需要有自学大量知识和技能的能力。
      • 其他志愿者的关注是非常稀缺的资源。
    • Debian 一直在不断进步。

      • Debian 期望您制作出高质量的软件包。
      • 您应该随时调整自己来适应变化。

    在这篇指南之后的部分中,我们只关注打包的技术方面。因此,请参考下面的文档来理解 Debian 的社会动力学:

    这里给出一些技术上的建议,参考行事可以让您与其他维护者共同维护软件包时变得更加轻松有效,从而让 Debian 项目的输出成果最大化。

    • 让您的软件包容易除错(debug)。

      • 保持您的软件包简单易懂。
      • 让您的软件包拥有良好的文档记录。

      • 使用可读的代码风格。

      • 在代码中写注释。
      • 格式化代码使其风格一致。- 维护软件包的 git 仓库 。

    2.5. Debian 文档

    请在阅读本指南的同时按需阅览下面这些 Debian 官方文档中的相关部分;这些文档提供的信息有助于创建质量优良的 Debian 软件包:

    这里有一些替代性的教程文档,您可以与本指南一起阅读进行参考:

    2.6. 帮助资源

    在您决定在某些公共场合问出您的问题之前,请先做好自己能做到的事情,例如,阅读能找到的文档:

    • 软件包的信息可以使用 aptitudeapt-cache 以及 dpkg 命令进行查看。
    • 所有相关软件包在 /usr/share/doc/*软件包名* 目录下的文件。
    • 所有相关命令在 man 命令 下输出的内容。
    • 所有相关命令在 info 命令 下输出的内容。- 的内容。
    • debian-devel@lists.debian.org 邮件列表存档 的内容。

    要获取您所需要的信息,一种有效的方法是在网页搜索引擎中构建类似“关键字 site:lists.debian.org”这样具有限制条件的搜索字符串来限定搜索的域名。

    制作一个小型测试用软件包也是了解打包细节的一个好办法。对当前已有的维护良好的软件包进行检查则是了解其他人如何制作软件包的最好方法。

    如果您对打包仍然存在疑问,您可以使用以下方式与他人进行沟通:

    如果您在做好功课后能在这些场合中合适地提出您的疑问的话,那些更有经验的 Debian 开发者会很愿意帮助您。

    请了解 Debian 仓库的当前状况。

    • Debian 已经包含了绝大多数种类程序的软件包。
    • Debian 仓库内软件包的数量是活跃维护者的数十倍。
    • 遗憾的是,某些软件包缺乏维护者的足够关注。

    因此,对已经存在于仓库内的软件包做出贡献是十分欢迎的(这也更有可能得到其他维护者的支持和协助上传)。

    2.8. 贡献流程

    这里使用类 Python 伪代码,给出了向 Debian 贡献名为 program 的软件所走的贡献流程:

    其中:

    您或是需要填写并提交一份 ITP,或是需要“收养”一个软件包并开始为其工作。请见“Debian 开发者参考(Debian Developer’s Reference)”文档:

    2.9. 新手贡献者和维护者

    新手贡献者和维护者可能想知道在开始向 Debian 进行贡献之前需要事先学习哪些知识。根据您个人的侧重点不同,下面有我的一些建议供您参考:

    • 打包

      • POSIX shellmake 的基本知识。
      • 一些 PerlPython 的入门知识。
    • 翻译

      • 基于 PO 的翻译系统的工作原理和基本知识。
    • 文档

      • 文本标记语言的基础知识(XML、ReST、Wiki 等)。

    新手贡献者和维护者可能想知道从哪里开始向 Debian 进行贡献。根据您掌握的技能,下面有我的一些建议供您参考:

    • POSIX shellPerlPython 的技巧:

      • 向 Debian 安装器提交补丁。
      • 向 Debian 打包帮助脚本(如本文档中体提及的 devscriptspbuilder 等项目)提交补丁。
    • CC++ 技能:

      • 向具有 requiredimportant 优先级的软件包提交补丁。
    • 英语之外的技能:

      • 向 Debian 安装器项目提交补丁。
      • 为具有 requiredimportant 优先级的软件包中的 PO 文件提交补丁。
      • 文档技能:

      • 更新 Debian 维基(Wiki) 中的内容。

      • 向已有的 提交补丁。

    这些活动应当能让您在各位 Debian 社区成员之间得到存在感,从而建立您的信誉与名气。

    新手维护者应当避免打包具有潜在高度安全隐患的程序:

    • setuidsetgid 程序
    • 守护进程(daemon)程序
    • 安装至 /sbin//usr/sbin/ 目录的程序

    在积累足够的打包经验后,您可以再尝试打包这样的程序。


    [4] 绝大多数 Debian 维护者使用 git 而非其它版本控制系统,如 hgbzr 等等。