介绍和制作deb包

3.1 deb包初探

deb包结构包含两部分:

  • 控制信息(DEBIAN目录)
  • 安装内容(etc、usr等目录)

DEBAIN目录一般包含以下文件:

  • control

    主要描述软件包的名称(Package),版本(Version)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。同时为了能将软件包进行充分的管理

  • postinst(postinstallation)

    该脚本的主要任务是完成安装包时的配置工作。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务

  • postrm(postremove)

    软件卸载后需要执行的脚本,主要负责修改软件包链接文件、或删除创建的文件

  • preinst(preinstallation)

    在Deb包文件解包之前,将会运行该脚本。 许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成

  • prerm(preremove)

    软件卸载前需要执行的脚本,主要负责停止与软件包相关的daemon服务

  • copyright(版权)
  • changlog(修订记录)
  • conffiles

一个control文件实例:

Package: dante
Version: 1.3.2-1
Architecture: amd64
Maintainer: mr-zhao <[email protected]>
Installed-Size: 1438
Depends: libc6 (>> 2.15), libc6 (<< 2.16), libgssapi-krb5-2 (>= 1.10+dfsg~)
Section: unknown  #声明软件类别
Priority: extra   #软件对系统的重要程度(required、standar、option、extra) 
Homepage: <insert the upstream URL, if relevant>
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>

3.2 deb制作

deb包的制作有三种情况:

  • 源码包制作deb包
  • deb-src包制作deb包
  • 修改现有的deb包制作新的deb包

3.2.1 源码包制作deb包

源码包制作deb包一般常用有两种方法:

  • checkinstall

    checkinstall不仅可以生成deb包,还可以生成rpm包,使用简单,但是不灵活,功能粗糙

  • dpkg工具 dh-make

    dpkg是最基本的制作deb包的方法

(1) 利用checkinstall打包

Step 1:安装依赖关系软件包

$ sudo apt-get install build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev libglib2.0-dev libevent-dev checkinstall

Step 2: 制作DEB包

$ wget http://www.inet.no/dante/files/dante-1.3.2.tar.gz
$ tar zxvf dante-1.3.2.tar.gz
$ cd dante-1.3.2
$ ./configure
$ make
$ sudo checkinstall      //以一种交互的方式进行打包,过程会显示软件包基本信息,可直接修改

当前目录下就生成 dante_1.3.2-1_amd64.deb

Step 3: 测试软件包是否可用

$dpkg -i dante_1.3.2-1_amd64.deb //安装
$dpkg -r dante_1.3.2-1_amd64.deb //卸载

(2) 利用dpkg打包

Step 1:安装依赖关系软件包

$ sudo apt-get install dh-make make fakeroot

Step 2: 制作DEB包

$ wget http://www.inet.no/dante/files/dante-1.3.2.tar.gz
$ tar zxvf dante-1.3.2.tar.gz
$ cd dante-1.3.2
$ dh_make -s -e [email protected] -f ../dante-1.3.2.tar.gz  //会在当前目录下生成debian目录,可自定义里面的控制信息
$ dpkg-buildpackage -rfakeroot

上级目录就会有 dante_1.3.2-1_amd64.deb

Step 3: 测试软件包是否可用

$ dpkg -i dante_1.3.2-1_amd64.deb //安装
$ dpkg -r dante_1.3.2-1_amd64.deb //卸载

3.2.2 deb-src制作deb包

这种方式往往是需要为原有的包进行小幅度优化,简单介绍一下。

Step 1: 获取source包

$ apt-get source <packagename>

Step 2: 修改代码和编译信息

Step 3: 准备编译环境和依赖包

$ apt-get install dpkg-buildpackage
$ apt-get build-dep <packagename>

Step 4: 重新打包

$ dpkg-buildpackage -uc -d

//完成后上一级目录将会出现一个或多个deb文件 (未测试)

3.2.3 修改现有的deb包制作新的deb包

$ dpkg -X dante_1.3.2-1_amd64.deb  test //解包安装内容
$ cd test
$ dpkg -e ../dante_1.3.2-1_amd64.deb  //解包控制信息,生成DEBAIN目录
$ ls test
DEBIAN  usr
自定义修改内容然后重新打包(一般是对配置文件进行修改,对功能进行调优等)
$ cd ..
$ dpkg -b test test_new.deb

Debain库非常丰富,一般都很少用源码包来制作deb包,通过对已有的deb包进行修改即可满足日常需求