deb格式属于Debian系列专属安装包格式,它广泛应用在Debian、Ubuntu等Linux发行版本中。deb包的制作过程也比较简单,它由包文件信息以及包内容,经过tar打包而成。实际制作或使用时,只需dpkg相关指令即可完成这些工作。



  大部分发行版中,deb包的安装信息记录在“/var/lib/dpkg”文件夹内,参考图1:

debian 12 编译python debian编程_deb包编写方式


图1-deb包安装信息


  接下来,我们通过制作、安装、卸载deb包,了解包信息在系统中的记录情况



章节预览:



1. 制作一个简单的deb包2. 确认、卸载deb包

章节内容:



1. 制作一个简单的deb包

  首先,创建一个文件夹,比如“testdeb”,参考图2:

debian 12 编译python debian编程_deb包的格式_02


图2-创建deb包文件夹


  进入“testdeb”文件夹,在文件夹中创建“DEBIAN”文件夹,它用来存放包的描述、安装、卸载等信息,参考图3:

debian 12 编译python debian编程_deb包的格式_03


图3-deb包信息记录文件夹


  进入“DEBIAN”文件夹,在文件中创建“control”文件,在这个文件中,添加包的描述信息,参考图4:

debian 12 编译python debian编程_Linux_04


图4-deb包描述信息


  文件中的字段信息在确认、安装、卸载时,可作为我们生成的deb包的独有标识,接下来分析这些含义:

Package: test-deb       //包的安装名称,查询或卸载包的时候使用
Version: 1.0.0.0        //包的版本号
Architecture: amd64     //包所支持的架构 amd64可在x86_64等架构使用,arm64可在arch64等架构使用等,应根据实际架构填写
Installed-Size: 1024    //包的大小
Depends:                //所依赖的其他包和库文件,如果是依赖多个包和库文件,采用逗号隔开
Section: utils          //程序的类别,常见的有utils, net, mail, text, devel等
Priority: optional      //程序对于系统的重要程度,如required, standard, optional, extra等
Maintainer: test01      //包的制作者,联系信息等
Description: test       //包的描述

  保存这些字段信息,可以正常安装、确认、卸载的包,编写完成了。



  接下来,我们生成这个包,命令行进入“testdeb”上一级文件夹,输入 dpkg -b testdeb/ testdeb.deb,参考图5:

debian 12 编译python debian编程_debian 12 编译python_05


图5-生成deb包


  现在,我们安装这个deb包,输入 sudo dpkg -i testdeb.deb,参考图6:

debian 12 编译python debian编程_deb包的格式_06


图6-安装deb包


2. 确认、卸载deb包

  在命令行中输入 dpkg --info testdeb.deb,可以看到包中“control”文件填写的内容,参考图7:

debian 12 编译python debian编程_debian 12 编译python_07


图7- dpkg --info指令用法


  接下来,我们从“/var/lib/dpkg”文件夹内查找这部分信息,由于我们的包没有实际功能,只在“status”文件中查找到了安装信息,但也足够应对实际应用场景,参考图8:

debian 12 编译python debian编程_debian 12 编译python_08


图8-“/var/lib/dpkg”文件夹内查找包信息


  接下来卸载安装包,在命令行中输入 sudo dpkg -r test-deb,参考

debian 12 编译python debian编程_Debian系列_09


图9- dpkg -r指令用法


  使用 dpkg -r指令只能卸载包中指定的内容(这篇文章没有讲述),如果deb包编写的不完善或文件占用等情况下,会存在“残留”,使用dpkg -P指令可以强制卸载deb包的所有安装信息。

  关于dpkg相关的知识还有很多,比如编写一个完整的deb包、 “DEBIAN”文件夹内的文件,在包安装后的保存路径等。

  dpkg相关文章以后有时间会继续写,如果有朋友喜欢可以下方留言,留言内容可以是需要理解的部分。