deb包结构介绍和打包解包

1、deb包基本结构

deb包是Debian 及其衍生系统(如 Ubuntu)使用的软件包格式

一个deb包一般包含两部分,数据部分和控制部分

数据部分

包含了软件实际安装到系统中的文件,解压后通常有以下几个目录

/bin,/usr,/etc,/lib,/var,分别存放二进制执行文件,软件包多数文件存放路径,配置文件,库文件,日志文件等

控制部分

包含了软件包的元数据和控制信息,解压后主要有以下文件:

必须包含文件有control,其他文件postinst、postrm、preinst、prerm按需创建和配置

control 文件:包含了软件包的基本信息,如软件包名称(Package)、版本号(Version)、描述(Description)、依赖关系(Depends)、维护者信息(Maintainer)等

Package: example-package

Version: 1.0-1

Maintainer: John Doe <johndoe@example.com>

Description: This is an example package for demonstration purposes.

Depends: libc6, libssl-dev

 

各控制脚本作用

pretinst 软件安装前执行操作,常用于检查系统环境,创建必要的文件

postinst 软件安装后执行操作,常用于启动服务,更新配置

prerm 软件卸载前执行操作,常用于停止服务,备份配置

postrm 软件卸载后执行操作,常用于清理残留文件和配置

 

具体在安装、卸载、覆盖安装时执行顺序

首次安装:preinst->postinst

卸载:prerm->postrm->postrm

升级:prerm->preinst->postrm->postinst

 

查看一个包结构,如tree包

这个包比较简单,没有控制脚本,核心文件就是二进制文件/usr/bin/tree

 

2、deb包制作管理

可以使用系统自带的dpkg-deb和dpkg命令对包做简单修改并重新打包

解包:dpkg-deb -R exapmle.deb ./repackage #将exapmle.deb内容全部解压到./repackage

打包:dpkg-deb -b ./repackage new.deb #构建./repackage内容生成new.deb包

dpkg-deb参数说明

-R 解压控制信息和控制文件,-e 解压控制信息,-x 解压控制文件,-b 构建包

-c 列出软件包内文件的详细信息,-I 、-f 列出包的说明信息,-W 列出包名和版本信息

dpkg-deb大部分参数,dpkg也有,可以由dpkg来完成解包和打包

 

制作一个简单的deb包,来测试

mkdir -p helloworld/{DEBIAN,usr,bin}
echo -e "Package:helloworld\nVersion:1.0\nArchitecture:all\nMaintainer:hello@cs.com\nDescription:helloworld" > \
helloworld/DEBIAN/control
touch helloworld/DEBIAN/{preinst,postinst,prerm,postrm}
echo "echo preinst" > helloworld/DEBIAN/preinst
echo "echo postinst" > helloworld/DEBIAN/postinst
echo "echo prerm" > helloworld/DEBIAN/prerm
echo "echo postrm" > helloworld/DEBIAN/postrm

chmod 755 helloworld/DEBIAN/*
echo "helloworld" > helloworld/usr/hello.txt
echo "cat /usr/hello.txt" > helloworld/bin/hello
tree helloworld/
sudodpkg -b helloworld/ helloworld_1.0_all.deb
sudo dpkg -i helloworld_1.0_all.deb
bash hello
whereis hello
sudo dpkg -P helloworld

 

部分测试截图

图中有包结构信息,安装和卸载包时控制脚本执行顺序

posted on 2025-04-10 17:18  赛博狗尾草  阅读(251)  评论(0)    收藏  举报

导航