这篇文章为普通的Debian用户和希望能够对Debian安装包有所了结的开发人员讲述 了制作Debian安装包的方法。它使用了非常通用的语言,并且通过一个可以工作的 例子进行了演示。有一句古老的罗马谚语说的好:Longum iter est per preaecepta, breve et efficax per exempla! (通过理论要讲述很久的问题,可以很快地用例子说明白。)
Debian能够成为一个高质量的Linux发行版的重要原因之一就是它的安装包系统。 尽管已经存在相当大量的用Debian格式打包的软件,有时你还是需要安装一些不是 这一格式的软件。可能你会为如何制作自己的安装包而彷徨,而且也许你会认为这 是一个非常困难的任务。是的,如果你是一个Linux初学者,那么这的确很难,不过 如果你真的是一个新手,现在你也就不会来读这个文档了。:-) 你的确需要对Unix 的编程有所了解,但你并不需要是这方面的天才。
有一件事情是非常明确的:如果你希望创建并维护一个Debian的安装包,那将花费 你数个小时的时间。为了能够没有错误,让我们的系统很好地工作,作为一个维护 人员,必须有技术上的基础并且非常勤奋。
这篇文档将会讲述每一个细小(开始时也许给人感觉毫不相干)的步骤,并且帮助你 创建第一个安装包,从而让你学习到可以帮助你制作它的下一个版本或者其它安装 包的经验。
这个文档的更新版本可以在 http://www.debian.org/doc/maint-guide/
和 `maint-guide
' 安装包中找到。这个文档的中文翻译版本也可以在
`maint-guide-xy
' 安装包中找到。
在开始之前,你需要确认你是否已经正确安装了一些附加的在开发时需要的安装包。 注意这里列出的软件都没有标记为`essential'或者是`required'——我们希望你能 够安装好这些软件。
这个文档的当前版本已经为Debian 2.2(`potato')和3.0(`Woody')更新过了。
下面列出的这些软件在Debian的标准安装中已经有了,因次它们在你的机器上应当 已经安装好了(也包括它们倚赖的其它软件包)。然而,你还是应该用 `dpkg -s <package>`来检查一下。
dpkg-dev
-
这个软件包包括了在解包、制作、上传Debian源文件包时需要用到的 工具。
(参考dpkg-source(1)
)
file
- 这个小程序可以检测文件的类型。 (参考 file(1)
)
gcc
- GNU C语言编译器,如果你的程序是和其它很多程序一样用C
语言编写,那么就需要这个软件包。(参考 gcc(1)
)
这个软件包还会"pull
in"其它几个软件包,比如包括汇编和链接目标文件的程序的软件包
binutils
(参考binutils-doc
软件包中的`info
binutils`)和C预处理 器cpp
(参考cpp(1)
)。
g++
- GNU C++语言编译器,如果你的程序是用C++语言写的那就需 要它。
(参考 g++(1)
)
libc6-dev
- gcc需要的用于链接和创建目标文件的C函数库和头文件。
(参考 glibc-doc
软件包中的 `info libc`)
make
- 通常创建一个程序的过程需要经过好几步,为了能够不把同样的
命令一遍又一遍的输入,你可以用这个程序通过创建`Makefile'来使这个 过程自化。
(参考 `info make`)
patch
- 这是一个非常有用的工具,它可以把(用diff程序生成的)包含
有一个差别列表的文件应用到原先的文件上去,从而生成一个补丁版本的 程序。 (参考
patch(1)
)
perl
- Perl是在当今的Unix类系统上应用得非常广泛的解释型脚本语
言之一,它通常被称作“Unix的瑞士军刀”。 (参考 perl(1)
)
你也很可能会想要安装下面的软件包:
autoconf
和automake
-
很多新的程序在这一类工具的帮助下来配制 脚本文件并对Makefiles进行预处理。 (参考
`info autoconf`, `info automake`)
dh-make
和debhelper
-
在例子中创建我们的软件包时需要使用
dh-make来创建它的骨架,并且要使用到一些debhelper软件包中的工具。
他们对于创建软件包不是最基本的,但对于新的维护者则是强烈推荐使
用的。它们使得整个过程的开始变得很容易且使后续的过程容易控制。
(参考dh_make(1)
,debhelper(1)
,/usr/share/doc/debhelper/README)
devscripts
- 这个软件包中包括了一些非常好的且很有用的脚本程序,
它们对于维护者是很有用的,但它们对创建软件包也不是必需的。 (参考
/usr/share/doc/devscripts/README.gz)
fakeroot
- 这个工具使你可以模拟变成root用户,这在创建软件包的过
程的一些部分是必要的。 (参考 fakeroot(1)
)
gnupg
- 一个可以让你对你制作的软件包进行数字签名的工具。
如果你希望把它发布给其他人,这个步骤是非常重要的,并且当你所做的
工作被加入到Debian发行版中时就必需进行这一步。 (参考 gpg(1)
)
g77
- GNU Fortran 77语言编译器,如果你的程序是用Fortran语言编写
的就需要它了。 (参考 g77(1)
)
gpc
- GNU Pascal语言编译器,如果你的程序是用Pascal语言写的,
就需要它了。这里值得一提的是软件包fp-compiler
,自由Pascal编译
器(the Free Pascal Compiler),它也是一个完成这一任务的好选择。 (参考
gpc(1)
, ppc386(1)
)
imake
和 xmkmf
-
一些程序,通常是为X11编写的程序,也使 用这些程序通过一套宏来生成Makefile文件。
(参考 imake(1)
,xmkmf(1)
)
lintian
- 这是一个Debian软件包检查程序,它可以在你创建软件包
后为你找出一些常见的错误,并解释这些错误。 (参考
lintian(1)
,/share/doc/lintian/lintian.html/index.html)
下面列出的这些文档都非常重要,你在阅读本文档时也应当阅读它们:
debian-policy
- 政策(Policy)文件中包含了对很多内容的解释,比
如Debian档案的结构及内容、几个关于操作系统设计的问题、文件系统
层次标准(讲述了每个文件和目录应该存在的地方)等等。
对你来说,最重要的是它描述了在被加入到发行版中时每个软件包必须 满足的要求。
(参考 /usr/share/doc/debian-policy/policy.html/index.html)
developers-reference
- 包含了全部的参考资料,其内容不只是打
包软件的技术细节,比如文档的结果、如何该名、孤儿、选择软件包、
如何做nmus、如何管理bugs以及在什么时间将软件包上传到什么位置等 等。 (参考
/usr/share/doc/developers-reference/developers-reference.html/index.html)
上面的简短描述只是对每一个软件包进行了一下简单的介绍。在几许后面的工作 前,请完整的阅读每一个程序的文档,至少要了解基本的用法。现在看来也许是 很繁重的任务,不过以后你会非常高兴的去阅读它们的。
注意: debmake
软件包中包含了一些和dh-make作用相似的程序,但它的详
细用法并没有包含在这份文档中,因为它已经不推荐使用了。要得到更多的
信息,请参考 the Debmake
manual
。
你可以制作的软件包有两种,源文件版本和可执行版本。源文件版本的软件包包 含了可以被编译成程序的源代码。可执行版本的软件包只包含编译好的文件。不 要把程序源文件和程序的源文件版本软件包混在一起!如果你需要更详细的关于 这些词汇的资料,请参考阅读其它的手册。
在Debian中,`维护者(maintainer)'一词指的是制作软件包的人,`上游作者 (upstream author)'指的是编写程序的人,而`上游维护者(upstream maintainer')是指在Debian项目之外维护着程序的人。通常情况下作者和上游维 护者是同一个人——有时维护者甚至也是同一个人。如果你编写了一个程序并且 希望它被包含到Debian中,那么你可以提交你的程序从而成为一个维护者。
在你创建了你的软件包(或则正在做这件事情),若你希望它能够被加入到下一个 发行版中(如果你的程序非常有用,为什么不呢?),那么你必须成为一个正式的 Debian维护者。这一过程在开发人员参考(Developer's Reference)中解释了。 请阅读它。
Debian新维护人员手册
version 1.2, 2002年4月6日.joy-mg@debian.org