全部博文(20)
分类: LINUX
2012-05-11 17:00:58
dpkg是Debian软件包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包.也是Debian系统中众多软件包管理工具的后端.那么怎样去制作debian包呢?其中又得注意很多文件的内容下面就简单介绍一下deb包的制作和control文件的内容的编写:
一、制作deb包的方法
使用dpkg方法创建Ubuntu deb包dpkg是最基本的制作deb包的方法,基本步骤如下:
1、$ tar xvjf fceu-0.98.12.src.tar.bz2 // 解包
2、$ mv fceu fceu-0.98 // 改目录名为 包名-版本号
3、$ cd fceu-0.98
4、$ dh_make -s -e xieyan0811@sina.com.cn -f
5、../fceu-0.98.12.src.tar.bz2 // 生成制作deb包所需的默认信息
此时当前目录下生成了debian目录,此时通常修改两个文件:
修改debian/control文件,配置你的信息,具体字段见后
修改debian/rules脚本,它决定编译参数(也可以不改)
$ dpkg-buildpackage -rfakeroot此时可以看到,上层目录中已建立了Ubuntu deb包
二、control文件配置说明
下面是一个control文件的示例(把下面的内容粘贴到一个名为"control"的文件,不要任何扩展名):
代码:
需要注意的有一下几点:首先,你需要在文件最后留下一空白行。这是至关重要的,如果没有…你的.deb包无法运行。
这些语句本身是简洁易懂的。
Package:指该软件包的名字。如果你的软件包名称有两个词,用一个连字符(-)把它们连起来。软件包的名称只能有小写的英文字母,数字(不管你相信不相信)以及"+"和"-"。
Version:显然是程序的版本。确保这里的值不包括连字符。
Section:列出了你的软件属于的类别,可能的值包括admin(管理),games(游戏),gnome,kde,mail(电子邮件),misc(杂项)<译者注:misc是miscellaneous的简称>,net(网络),sound(声音),text(文本),utils(实用工具)和web(万维网)。
Priority:声明这个包的优先级(大部分的时候使用optional(可选的))。
Architecture:是该程序可运行的CPU架构(可能的值为i386,amd64和powerpc)<译者注:此处虽然是专有名词,但是由于linux是大小写敏感的,所以文件内还是应该小写>。
Eseential:指该软件包是否是必须的(大部分的时候不是)。
Depends:意味着要使用这个程序必须拥有的程序,
Recommends:指除了极特殊情况下的安装之外,大多数时候都需要的依赖关系。
Suggests:意味可能给这个软件带来更多功能的,但是没有完全没有问题的依赖关系<译者注:同Recommands>。
你可以用英文的半角逗号分开不同的依赖关系(,)。如果两个软件中的任何一个可以工作,用竖线"|"分开它们。你也可以指定特定的版本,用在括号里用<<(小于),<=(小于或等于),=(等于),>=(大于或等于),或>>(大于)来表示。Install-Size是程序安装后的大小,按KB算。
Maintainer:就是你(写上你的名字,后面的方括号"[ ]"里留下你的电子邮件地址)。
Conflicts:表示跟这个程序冲突的软件。
Replaces:表明哪些软件包将被这个程序取代。
Description:显示你的描述。
这样你的control文件就完成了,把它保存到一个名为"/DEBIAN"的文件夹里(注意必须大写)。例如,如果你正在建立一个软件包,并且你的要打包的软件是在~/fungame/,那么你应该把你的control文件放在~/fungame/DEBIAN/下面。
现在是时候添加实际程序了。复制要打包的程序到你的工作文件夹(上文中的~/fungame)。比如说,如果软件X位于/usr/local/X/,可执行文件在/usr/bin/X,你的.deb文件夹是~/fungame/,把/usr/local/X/的所有东西复制到~/fungame/usr/local/X/,同时复制文件夹/usr/bin/fungame/下的所有东西到~/fungame/usr/bin。
你也可以建一个菜单条目(一个.desktop文件),这里的例子位于~/fungame/usr/share/applications/fungame.desktop。这个文件的内容如下:
代码:
你可以忽略"Icon"那一行
现在是生成你的软件包的时候了。cd进你的工作文件夹(例如~/fungame/)并在终端运行命令dpkg -b [derectory] [packagename.deb]。将[derectory]替换成你的工作目录(这里是~/fungame/),·[packagename.deb]替换成将要生成的软件包的名字。软件包的名字也是有规定的。正确的命名规则为:program-name_version_architeture.deb。所有的值应该与它们在control文件里对应的语句相同。