Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138792
  • 博文数量: 20
  • 博客积分: 551
  • 博客等级: 下士
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-28 15:55
文章分类

全部博文(20)

文章存档

2012年(12)

2011年(8)

分类: 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"的文件,不要任何扩展名):
代码:

Package:fungame
Version:1.0
Section:games
Priority:optional
Architecture:i386
Essential:no
Depends:libfungame,gamelibrary(>=1.4.0)
Recommends:fungamesaves1|fungamesaves2
Suggests:optionalfungame
Installed-Size:1024
Maintainer:Game Maker[gamer@gamers.net]
Conflicts:stupidfungamethatbreaksthisone
Replaces:oldfungame
Description:A short description of the program
...
A long description



需要注意的有一下几点:首先,你需要在文件最后留下一空白行。这是至关重要的,如果没有…你的.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。这个文件的内容如下:
代码:

[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=Fun Game
Exec=fungame
Comment=
Icon=/usr/local/fungame/fungame.png
Terminal=false
Categories=Application;Game;
StartupNotify=false
MimeType=

你可以忽略"Icon"那一行
现在是生成你的软件包的时候了。cd进你的工作文件夹(例如~/fungame/)并在终端运行命令dpkg -b [derectory] [packagename.deb]。将[derectory]替换成你的工作目录(这里是~/fungame/),·[packagename.deb]替换成将要生成的软件包的名字。软件包的名字也是有规定的。正确的命名规则为:program-name_version_architeture.deb。所有的值应该与它们在control文件里对应的语句相同。

阅读(9103) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~