七、Linux包deb
deb文件是包含数据的存档。用于轻松分发和安装Linux Debian及其衍生发行版适合的程序。当您的应用程序需要处理其他依赖项、将自身与桌面集成、运行安装前和安装后脚本等时,Deb文件非常方便。(与deb格式功能类似的另一种包格式是Fedora系列发行版常用的rpm文件。)
1 deb包命名约定
<软件名称>_<主版本号>-<修订版本号>_<硬件架构>.deb
-
软件包名称:
libglfw3
-
主版本号:
3.3.6
-
修订版本号:
1
-
硬件架构:
amd64
2 deb包介绍
deb包本身有三部分组成:
-
control.tar.zst:安装信息及控制脚本包,包含 deb 的安装说明,标识,脚本等。
- control:用了记录软件标识,版本号,平台,依赖信息等数据,这是最主要的文件配置,必不可少;
- preinst:在解包data.tar.gz 前运行的脚本;
- postinst:在解包数据后运行的脚本;
- prerm:卸载时,在删除文件之前运行的脚本;
- postrm:在删除文件之后运行的脚本;
-
data.tar.zst:数据包,包含实际安装的程序数据。
-
debian-binary:文件是 Debian 软件包的控制文件之一,其中包含一个版本号,一般都是2.0。
3 制作deb包
- 创建一个工作目录
mkdir hellodeb_1.0-1_amd64
- 创建内部结构,将程序放在目标系统上应安装的位置
mkdir -p hellodeb_1.0-1_amd64/usr/bin
- 复制
hellodeb
程序到bin
目录cp hellodeb hellodeb_1.0-1_amd64/usr/bin
- 创建control文件存放目录
mkdir hellodeb_1.0-1_amd64/DEBIAN
- 创建空文件control
touch hellodeb_1.0-1_amd64/DEBIAN/control
填写control内容:
# Package (软件包): 这一部分指定了软件包的名称,例如 apache2。 # Version (版本): 这一部分指定了软件包的版本号,例如 2.4.52-1ubuntu4.8。 # Architecture (架构): 这一部分指定了软件包的目标架构,例如 amd64 表示 64 位的 x86 架构。 # Maintainer (维护者): 这一部分指定了软件包的维护者和联系方式。 # Installed-Size (已安装大小): 这一部分指定了安装软件包后占用的磁盘空间大小,以 KB 为单位。 # Pre-Depends (预依赖): 这一部分指定了在安装软件包之前需要满足的先决条件。 # Depends (依赖): 这一部分指定了软件包运行所需的依赖项。 # Recommends (建议): 这一部分指定了软件包建议安装的附加组件,但不是必需的。 # Suggests (建议): 这一部分指定了软件包可能会有用但并不是必需的软件包。 # Conflicts (冲突): 这一部分指定了与当前软件包冲突的其他软件包。 # Replaces (替换): 这一部分指定了当前软件包替代的其他软件包。 # Provides (提供): 这一部分指定了当前软件包提供的功能或服务,通常用于兼容性目的。 # Section (分类): 这一部分指定了软件包在软件仓库中的分类,例如 httpd 表示 Web 服务器。 # Priority (优先级): 这一部分指定了软件包的安装优先级,例如 optional 表示可选。 # Homepage (主页): 这一部分指定了软件包的主页网址。 # Description (描述): 这一部分提供了关于软件包的详细描述,包括其功能、用途等信息。 # Original-Maintainer (原始维护者): 这一部分指定了软件包最初由哪个组织或个人维护。
-
编写安装和删除前后自动运行的脚本
-
构建deb包
dpkg-deb --build --root-owner-group hellodeb_1.0-1_amd64
-
系统安装deb包后,信息存储在哪里?
/var/lib/dpkg/info
目录存储脚本文件和安装了那些文件信息。/var/lib/dpkg/status
文件存储control里面的信息。