2009年(26)
分类: LINUX
2009-04-20 21:14:04
Debian软件包由dpkg软件包管理工具制作。dpkg遵循由一个单独的文本文件所指定的一系列指令。在基于debian的系统中,如果你使用如下命令:
apt-get source msn-pecan
从下载下来的msn-pecan目录中,看到有个debian目录,该目录主要包含两个重要文件,control文件和打包规则文件rules,其中control该文件主要包括:
Depends:指定必须先安装的软件包,因为当前软件包依赖该包,如gtk应用程序必须依赖gtk+-2.0,该项用于避免造成严重的系统损坏。
Suggests: 可以认为是可要可不要的软件包
Conflicts:表示如果安装当前软件包必定不能与这个特定的软件包同时。例如,安装Pidgin软与gaim软件相冲突。
Provides:Debian
有时会定义虚拟软件包或不存在的软件包,它提供了一种友好的方式来指向某一特定类型的软件,可能有许多可用的软件都属于这一类型。这有助于用户寻找一个现
有的软件包或一个著名的软件包在最新的Debian版本中被转移到了哪里,而不需要用户理解这背后的策略。
创建一个单独的Debian软件包的过程是非常简单易懂的,这要感谢Debian的自动化帮助脚本。在本例中,给定一个已有的源代码项目,我们可以 通过在命令行中使用dh_make来创建一个新的软件包。例如,我们将从google souce 上下载下来的 msn-pecan-0.18.tar.bz2 拷贝到一个新的目录中
bunzip2 -d msn-pecan-0.18.tar.bz2
tar -xvvf msn-pecan-0.18.tar
并以msn-pecan-0.18作为一个全 新的Debian软件包的基础。进入msn-pecan-0.18目录
# dh_make -e dalashan@gmail.com -f ../msn-pecan-0.18.tar.gz
此时系统会问你想创建哪种类型的软件包:
Type of package:single binary,multiple binary,library,kernel module or cdbs?
[s/l/m/k/b]
一般来说,大都情况下我们都是为了创建一个单独的二进制软件包,所以选择选项“s”(其他类型更为复杂,详细信息请查看dh_make的相关文档)。
Maintainer name : root
Email-Address : dalashan@gmail.com
Date : Mon, 20 Apr 2009 16:29:11 +0800
Package Name : msn-pecan
Version : 0.18
License : blank
Type of Package : Single
Hit
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the msn-pecan Makefiles install into $DESTDIR and not in / .
此时你会发现在源码目录中多了一个debian目录。
# cd debian
# ls
changelog dirs init.d.ex menu.ex preinst.ex
compat docs init.d.lsb.ex msn-pecan-default.ex prerm.ex
control emacsen-install.ex manpage.1.ex msn-pecan.doc-base.EX README.Debian
copyright emacsen-remove.ex manpage.sgml.ex postinst.ex rules
cron.d.ex emacsen-startup.ex manpage.xml.ex postrm.ex watch.ex
你会发现一下多了,很多文件,这些都是dh_make生成的,可以根据你需要打包的情况,修改control文件,rules文件。我一般都是将*.ex 文件全部的删除掉。为了记录每次修改源码的记录,建议修改changelog文件,其修改格式务必保持如下:
msn-pecan (0.0.18-0~hardy1) hardy-backports; urgency=low
* dalashan cross compile.
-- dalashan
(注:后面的日期字符串,你可以在命令行下使用 date -R 得到)
好了,dh_make相关工作到此,下面就可以使用:
#dpkg-buildpackage -rfakeroot -b(只生成二进制包) -tc(打包完毕后进行clean操作)
最后,你可以使用dpkg -c x.deb 来查看生成的软件包里包含哪些文件。使用 sudo dpkg -i *.deb 来安装软件。