deb 概述 deb包(.deb)是 Debian 和基于 Debian衍生操作系统(如Ubuntu)中使用的一种软件包的格式。deb是一种基于 Unix ar [3] (Unix archiver) 的归档文件。其中包含二进制文件、配置文件和其他软件所需的资源。deb包可用于安装、升级和卸载软件包。通常,Debian操作系统的用户使用apt(Advanced Package Tool)等软件包管理器工具来管理deb包。通过这些工具,用户可以轻松下载、安装和管理软件包,而无需手动编译、安装和解决软件包之间的依赖关系。
deb VS rpm 包的归档格式不同:deb是基于 ar 的归档模式,而RPM是基于 cpio 的归档模式 包的结构不同:deb包要求必须包含一个 DEBIAN 目录;而RPM不需要以来额外的目录结构 包的依赖机制不同: Deb使用epoch,而RPM使用build number:在Deb中,epoch是一个可选的字段,它允许呈现基准日期之前的先前版本。而在RPM中,build number表示软件包编译的次数。因此,在Deb中,为了解决版本控制问题,epoch是非常重要的,而在RPM中,则更关注build number。 Deb使用逆向依赖关系,而RPM使用依赖关系:在Deb中,依赖项是从包本身向外扩展,在解决依赖问题时可以通过逆向依赖关系进行。而在RPM中,则更喜欢使用依赖关系直接指向其他包。 Deb允许代理软件包,而RPM则不允许代理软件包:Deb中,软件包可以使用另一种软件包的代理来提供功能。在RPM中,软件包需要直接引用相关的软件包。这意味着在Deb中,对于版本控制,可以用另一种代理软件包来解决问题,而在RPM中必须直接引用包。 Deb允许多重依赖关系,RPM则不允许:Deb允许使用多个依赖项列表,以便包与不同版本的库兼容。在RPM中,需要在每个包中定义依赖项和其版本,不能使用多重依赖。 deb包的分析 deb包的结构 deb 最重要的是 控制文件 Control ,该文件记录了deb包与其安装的程序的信息。
在deb包内部包含一组模拟 Linux 文件系统的文件夹,例如 /usr, /usr/bin, /opt等等。 放置在其中一个目录中的文件将在安装期间复制到实际文件系统中的相同位置。 因此,例如将二进制文件放入 <.deb>/usr/local/bin/binaryfile 将被安装到 /usr/local/bin/binaryfile.
对于deb 包的命名是遵循着一个特定的格式:
text 1 <name>_<version>-<revision>_<architecture>.deb <name> 构建的deb包名称,如nginx <version> 程序的版本号 ,如1.20 <revision> 当前 deb 包的版本号 <architecture> 表示构建出的包的操作系统架构,如,amd64、i386 如果你构建一个nginx-1.20的arm操作系统下的,那么deb包名格式则为 nginx_1.20-1_arm64.deb
control文件 [2] Deb软件包(....