deb包的打包流程

发布时间 2023-11-02 11:53:46作者: TechNomad

一、deb的文件结构

Debian 软件包(.deb)是一种用于 Debian 及其基于 Debian 的 Linux 发行版的软件包格式。这些软件包包含了用于安装、升级和卸载软件的文件和元数据。

 .deb 文件通常遵循一定的文件结构,包括以下主要部分:

  • 控制信息 (control):DEBIAN/control 文件包含软件包的元数据和控制信息,如软件包的名称、版本、依赖项、描述等。这些信息用于 dpkg 和包管理工具来管理和安装软件包。

  • 数据档案 (data):软件包的实际文件和目录结构,这些文件会被安装到系统上。这些文件通常包含在 data.tar.gzdata.tar.xz 文件中。

  • 预安装脚本 (preinst):DEBIAN/preinst 脚本包含在软件包安装之前要执行的命令,可以用于执行必要的准备工作。

  • 后安装脚本 (postinst):DEBIAN/postinst 脚本包含在软件包安装之后要执行的命令,可以用于执行清理工作、添加启动脚本等操作。

  • 预卸载脚本 (prerm):DEBIAN/prerm 脚本包含在软件包卸载之前要执行的命令,可以用于执行卸载前的清理操作。

  • 后卸载脚本 (postrm):DEBIAN/postrm 脚本包含在软件包卸载之后要执行的命令,可以用于执行卸载后的清理操作。

  • 配置文件 (conffiles):DEBIAN/conffiles 文件列出了软件包的配置文件,这些文件在软件包升级时需要特别处理,以确保用户的自定义配置不会丢失。

  • 文档文件 (doc):

  • 一些软件包可能包括文档文件,这些文件通常存储在 usr/share/doc 目录下。

注意:其中除了control是必须的,其余文件可以不创建,软件包的确切文件结构可以因软件包的性质和需求而有所不同,但上述是一个典型的.deb文件的一般结构。.deb 文件可以使用工具如 dpkg-deb 来创建或解包,以便查看其中的内容。

二、control文件的结构

Package: 软件包名称
Version: 软件包版本
Section: 软件包所属的部分
Priority: 软件包的优先级
Architecture: 软件包的体系结构
Essential: 是否是必要软件包
Depends: 软件包的依赖关系
Pre-Depends: 软件包的先决依赖
Recommends: 建议安装的软件包
Suggests: 建议但非必需的软件包
Conflicts: 与其他软件包的冲突
Provides: 软件包提供的功能
Replaces: 替代其他软件包
Maintainer: 维护者的信息
Description: 软件包的简短描述
软件包的详细描述(可以跨多行)

以下是这些字段的详细说明:

  • Package:软件包的名称。
  • Version:软件包的版本号。
  • Section:软件包所属的部分,通常是一个主题分类,如 net(网络)或 utils(实用工具)。
  • Priority:软件包的优先级,通常是 required(必需的), important(重要的), standard(标准的), optional(可选的), 或 extra(额外的)。
  • Architecture:软件包的体系结构,如 amd64(64位)或 i386(32位)。
  • Essential:指示软件包是否是系统所必需的。
  • Depends:软件包的运行时依赖关系,必须在安装软件包之前满足。
  • Pre-Depends:软件包的先决依赖,必须在安装软件包之前满足。
  • Recommends:建议但非必需的软件包,可以提高软件包的功能。
  • Suggests:建议但非必需的软件包,提供额外的功能。
  • Conflicts:与其他软件包存在冲突,不能同时安装。
  • Provides:软件包提供的功能,通常用于虚拟软件包。
  • Replaces:替代其他软件包,可以取代旧的软件包。
  • Maintainer:维护者的信息,包括姓名和电子邮件地址。
  • Description:软件包的简短描述和详细描述。详细描述可以跨多行。

control文件的写法示例:

Package: HelloWorld
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Installed-Size: 512
Maintainer: http://www.baidu.com
Description: HelloWorld package

 三、deb打包示例

1.创建一个source文件夹  

 

DEBIAN文件中存放control文件和一些安装或卸载的执行脚本文件

opt文件中存放可执行文件的目录,在安装deb包的时候就会把可执行程序安装到系统的opt文件夹中

usr文件中存储可执行文件的依赖库或说明文档,在安装deb包的时候就会把依赖库或说明文档安装到指定的系统目录中

如上图所示,会把include中的文件覆盖到usr/include目录中,会把lib中的文件覆盖到/usr/lib目录中