deb - Debian binary package format, Debian(及其衍生发行版)的二进制包格式
debian软件包分两类
- 二进制包
- 包括可执行文件、配置文件、帮助手册、版权等信息, 一般以.deb为后缀
- 可通过 dpkg 管理
- 源码包
- .dsc 源码控制文件
- .orig.tar.gz gzip压缩的未经修改的源码包
- .diff.gz 基于源码包的修改(patch)
- 可通过 dpkg-source 打包或解包
- apt-get source package 下载指定的源码包
deb包命名规范: 也是包名过长的原因
1 | <foo>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb |
例如: libpam-ldapd_0.9.6-3_amd64.deb
- foo 包名libpam-ldapd
- VersionNumber 版本号0.9.6
- DebianRevisionNumber 修正版本号3
- DebianArchitecture 构建deb包机器的cpu架构amd64, dpkg-architecture --list 可查看所有项
deb包构成
deb包就是标准的ar
归档文件, 包含2个tar文件: 1个是控制信息, 1个是具体的待安装文件
具体构成:
- debian-binary 单行的文本文件,包含deb包的格式版本(目前是2.0),打包工具自动生成
- control.tar 包含control md5sums prerm等控制信息,支持gzip和xz压缩
- data.tar 具体的安装文件,支持gzip bzip2 lzma xz压缩
deb包解压
ar命令
1 | root@dev:~/test# ar -xv libpam-ldapd_0.9.6-3_amd64.deb |
dpkg命令
解压数据文件(要安装的文件)到libpam目录
1 | root@dev:~/test# dpkg -x libpam-ldapd_0.9.6-3_amd64.deb libpam |
解压控制文件到libpam/DEBIAN目录
1 | root@dev:~/test# dpkg -e libpam-ldapd_0.9.6-3_amd64.deb libpam/DEBIAN |
简单的deb包制作
准备一个简单的可执行文件sayhello
1 | root@dev:~/testdeb# cat sayhello.c |
目录结构
1 | root@dev:~/testdeb# tree |
hello/DEBIAN/control 内容
1 | root@dev:~/testdeb# cat hello/DEBIAN/control |
hello/DEBIAN/md5sums 内容
1 | root@dev:~/testdeb# cat hello/DEBIAN/md5sums |
dpkg-deb 构建
1 | root@dev:~/testdeb# dpkg-deb --build hello sayhello-1.0_amd64.deb |
测试
1 | root@dev:~/testdeb# dpkg -i sayhello-1.0_amd64.deb |