[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 下一页 ]
本文档试图为普通 Debian 用户,和希望对 Debian 软件包有所了解的开发人员讲述如何制作 Debian 软件包。它使用了通俗的语言,并辅以大量可用于实践的示例。有一句古罗马谚语说得好:一例胜千言!
本文档已经为 Debian squeeze 进行了更新。 [1]
Debian 能够成为一个顶级的发行版的原因之一就是它的软件包系统。尽管相当数量的软件已经被以 Debian 格式打包,有时还是需要安装一些不是这一格式的软件。可能你会为如何制作自己的软件包而迷惑,并可能认为这是很困难的任务。是的,如果你是一个 Linux 初学者,那么这的确很难;不过如果你真的只是一个新手,现在也不会来读这篇文档了。:-) 你的确需要对 Unix 编程有所了解,但显然不需要是这方面的天才。
有一件事是非常明确的:创建并维护一个 Debian 软件包需要花费很多时间。为了能够不犯错误,维护者需要良好的技术基础并十分勤奋。
本文档会讲述每一个细节(在开始时或许给人感觉毫不相关),并帮助你创建出自己的第一个 Debian 软件包,从而使你学习到如何打包该软件的下一个版本或其他软件的经验。
如果需要帮助,请阅读 到何处寻求帮助, 第 1.4 节。
本文档的最新版始终可在 http://www.debian.org/doc/maint-guide/
和 maint-guide
软件包中找到,其简体中文版也可在
maint-guide-zh-cn
软件包中获得。
在开始之前,你需要确认你是否已经正确安装了开发所需要的附加软件包。注意这些软件包不包含任何已经被标记为 essential 或 required —— 我们假设你已经安装了它们。
以下这些软件包已经随标准的 Debian 安装而在系统中,所以你可能不需要再动手安装它们(以及任何附加的依赖软件包)。然而,你还是应该用 aptitude show package 来检查一下。
在开发系统中要安装的最重要的软件包是
build-essential
。当你安装它的时候,将会自动把基本编译环境里所需的其他软件包一并安装。
对于某些类型的软件,以上的就是所需要的全部。然而还有一组软件包虽不是对于所有软件包都必须,却可能对你有用或被你的软件包所需要:
file
- 这个小程序可以检测文件的类型。(参看
file(1)
)
patch
- 这是一个非常有用的工具,它可以把
diff
程序生成的差异清单文件应用到原先的文件上,从而生成一个补丁版本。(参看
patch(1)
)
perl
- Perl 是当今的类 Unix
系统中最常用的解释型脚本语言之一,常被誉为 Unix
的瑞士军刀。(参看 perl(1)
)
python
- Python 是 Debian
系统中另一个最常用的解释型脚本语言,它拥有着可圈可点的强大功能和十分清晰的语法。(参看
python(1)
)
autoconf
、automake
和 autotools-dev
-
很多新程序使用 configure 脚本和 Makefile
文件来帮助预处理程序。(参看 "info
autoconf"、"info automake")。
autotools-dev
则用于保持指定的自动配置文件为最新,并带有关于使用那些文件的最佳方法的文档。
dh-make
和 debhelper
- dh-make
是用于创建我们示例软件包骨架所必须的,它会使用
debhelper
中的一些工具来创建软件包。他们不是创建软件包所必须的,但对新维护人员而言,我们
强烈推荐
使用。它使得整个过程极为简化,并易于在将来维护。(参看
dh_make(1)
、debhelper(1)
、/usr/share/doc/debhelper/README
)
[2]
devscripts
-
此软件包提供了一些非常好非常有用的脚本帮助维护者,但他们并非构建软件包所必须。此软件包所推荐或建议的软件包都值得一看。(参看
/usr/share/doc/devscripts/README.gz
)
fakeroot
-
这个工具集使你可以在编译过程中必要的时候用普通用户模拟
root 用户环境。(参看 fakeroot(1)
)
gnupg
- 使你可以使用 数字签名
签署你的软件包。这在当你想把它分发给其他人时特别重要。如果你要把你的工作加入到
Debian 发行版中,这是必须的步骤。(参看 gpg(1)
)
gfortran
- GNU Fortran 95 编译器,如果你的程序是用
Fortran 编写的则必须此软件包完成编译。(参看
gfortran(1)
)
gpc
- GNU Pascal 编译器。如果你的程序是用 Pascal
写的则需要此软件包。值得一提的是
fp-compiler
,Free Pascal
编译器(FPC),也能够很好地胜任。(参看
gpc(1)
、ppc386(1)
)
xutils-dev
- 一些通常用于 X11
的程序,用于使用其宏功能生成 Makefile
文件。(参看 imake(1)
、xmkmf(1)
)
lintian
- Debian
软件包检查工具,使你可以在编译软件包后知道它是否有常见的错误,并对找到的错误进行解释。(参看
lintian(1)
、/usr/share/doc/lintian/lintian.html/index.html
)
pbuilder
- 这个软件包提供了创建和维护
chroot
环境。在此 chroot
环境中编译 Debian
软件包可以检查编译依赖是否合适并避免 FTBFS (Fails To Build
From Source,从源代码编译失败)的 Bug。(参看
pbuilder(8)
和 pdebuild(1)
)
patchutils
-
此软件包提供了一些可以帮助处理补丁的工具,如
lsdiff
、interdiff
和 filterdiff
命令。
quilt
-
此软件包帮助你管理一系列的补丁。它们被以逻辑栈的方式组织在一起。你可以
apply (=push)、un-apply (=pop)
或简单地刷新它们然后再放入栈内。(参看
quilt(1)
、/usr/share/doc/quilt/README.Debian
)
git
-
此软件包提供了用于快捷处理大型项目的著名版本控制系统
- git。它被广泛用于各种开源项目,最著名的是 Linux
内核项目。(参看
git(1)
、/usr/share/doc/git-doc/index.html
)
以下是 非常重要 的文档,你应该在读本文档时同时参看它们:
debian-policy
- Debian Policy
Manual
包含了对 Debian
软件仓库、操作系统设计事宜、文件系统层级标准(FHS,Filesystem
Hierarchy
Standard)(讲述每个文件和目录应该放在哪里)等的描述。对于你而言,最重要的是它描述了软件包要进入官方仓库前必须满足的条件。(参看
/usr/share/doc/debian-policy/policy.html/index.html
)
developers-reference
- Debian Developer's
Reference
描述了打包所需的包含技术细节在内的全部详细信息,如仓库结构、如何重命名/丢弃/接手软件包、如何进行
NMU(非维护者上传)、如何管理 Bug
以及打包最佳经验、何时向何处上传等。(参看
/usr/share/doc/developers-reference/
)
Autotools
Tutorial
为 the GNU Build System known
as the GNU Autotools
中最重要的工具 ——
Autoconf、Automake、Libtool 和 gettext 提供了很好的文档。
gnu-standards
- 此软件包包含了 GNU
项目中的两篇文档: GNU Coding
Standards
和 Information for
Maintainers of GNU Software
。尽管 Debian
不要求遵守这些规范,它们仍然很有帮助。(参看
/usr/share/doc/gnu-standards/standards.html
和
/usr/share/doc/gnu-standards/maintain.html
)
若本文档所叙述的内容与 Debian Policy Manual 或 Debian Developer's
Reference 有不符,则按照后两者的要求进行,并向
maint-guide
软件包提交 Bug 报告。
以上给出的简短描述仅仅是为了使你对这些软件包有一个基本的印象。在继续前请详细阅读每个程序的文档,至少了解其一般的用途和用法。现在看来这是一项耗时巨大的任务,但在接下来的工作中你将为你阅读了它们而感觉到 非常 愉快。
一共有两种类型的软件包。
源代码包:源代码包包含了代码和数据,可以编译成为可执行的程序和格式化的文档。它通常是以
*.orig.tar.gz
、*.debian.tar.gz
(或
*.diff.gz
) 和 *.dsc
的组合形式出现的。也可能使用一些其他的格式和压缩方法。
二进制包:二进制包包含了可执行的程序和格式化的文档。它通常是以
*.deb
文件的形式提供给普通 Debian 系统,以及
*.udeb
文件形式提供给 Debian 安装程序。
不要混淆程序源代码和程序的源代码包这样相似但有区别的概念!
在 Debian 社区中有几个常见的角色。
上游作者(upstream author):程序的最原始作者。
上游维护者(upstream maintainer):目前在上游维护程序代码的人。
维护者(maintainer):制作该程序的 Debian 软件包的人。
保证人(sponsor):检查内容后帮助维护者上传软件包到 Debian 官方仓库的人。
指导者(mentor):帮助维护者熟悉和深入打包的人。
Debian Developer (DD):Debian 社区的官方成员。DD 拥有向 Debian 官方仓库上传的全部权限。
Debian Maintainer (DM):拥有对 Debian 官方仓库部分上传权限的人。
Debian 中使用了几种不同的版本号。
上游源代码版本:上游源代码版本被指代为 version。
Debian 版本:Debian 软件包的版本被指代为 revision。
Debian 软件包版本:Debian 软件包版本被按以下规则指代。
对于 Debian 创建的软件,其源代码包的版本即为上文所述的 version。
对于不是 Debian 创建的软件,其源代码包的版本为 version-revision。
如果你需要更详细地了解术语,请阅读其他手册。
你不可能在一夜之间成为 Debian Developer
(DD),因为一个 DD
所需要的远不只是技术能力,请不要因此感觉到挫败或沮丧。如果你的软件对其他人有用,你可以作为一个
维护者(maintainer) 通过 一位
保证人(sponsor) 来上传软件,或者申请成为一位
Debian Maintainer。详见 Debian New
Maintainers
。
请注意,要成为一位正式的 Debian Developer 并不一定要创建新软件包。对已有软件做出贡献也是成为正式的 Debian Developer 的路径。眼下正有很多软件包正在等待一个好的维护者对其做出贡献。(参看 选择你的程序, 第 2.1 节)
在公共场所提出问题前请先阅读各种文档(RTFM,Read The Fucking
Manual)。包括但不限于
/usr/share/doc/dpkg
、/usr/share/doc/debian
、/usr/share/doc/autotools-dev/README.Debian.gz
、/usr/share/doc/package/*
文件和本文档中提及的软件的 man
/info
页面。更多内容参看 http://nm.debian.org/
制作小的测试软件包是学习打包的好方法,仔细查看维护较好的软件包则是了解他人如何制作软件包的最佳办法。
如果在所有可用的文档和在线资源中都无法找到答案,你可以在
Debian Mentors 邮件列表询问(debian-mentors@lists.debian.org
)。在那里会有经验更加丰富的
Debian
开发人员帮助你,但在发问前请确定要阅读已有的文档!
关于此邮件列表,参看 http://lists.debian.org/debian-mentors/
当你收到一个 Bug 报告后(没错,真正的 Bug
报告!),你需要研究 Debian
Bug Tracking System
(Debian Bug
跟踪系统,BTS)并阅读相关的文档以便高效处理这些报告。我推荐阅读
Developer's
Reference, 5.8. 'Handling bugs'
如果仍然不能解决所有的问题,则到 Debian Developers
邮件列表询问(debian-devel@lists.debian.org
)。关于此邮件列表,参看
http://lists.debian.org/debian-devel/
即使以上的问题都解决了,也不能高兴得太早。为什么?因为几个小时或几天内就会有人开始使用你的软件包,如果你犯了某些严重的错误,将被无数生气的 Debian 用户的邮件所轰炸…… 只是开个玩笑。:-)
放松一点并准备好处理 Bug 报告,在你的软件包完全符合 Debian 的各项规范前还需要付出很多努力,处理 Bug 也是对你很好的锻炼(再一次提醒,阅读那些 必须的文档 来了解详情)。祝你好运!
[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 下一页 ]
Debian 新维护人员手册
版本 1.2.25, 2010-12-22 12:44:34 UTCjoy-mg@debian.org
happyaron.xu@gmail.com
lilingv@gmail.com
ycheng@slat.org