转自:https://www.cnblogs.com/Genesis-007/p/5219960.html
deb包的文件结构:
deb包里面的结构:DEBIAN目录 和 软件具体安装目录(模拟安装目录)(如etc, usr, opt, tmp等)。
在DEBIAN目录中至少有control文件,还可能有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。
control文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须剧本的描述性文件,以便于软件的安装管理和索引。为了能将软件包进行充分的管理,可能还具有以下字段:
Section:申明软件的类别,常见的有`utils’, `net’, `mail’, `text’, `x11′ 等;
Priority:申明软件对于系统的重要程度,如`required’, `standard’, `optional’, `extra’ 等;
Essential:申明是否是系统最基本的软件包(选项为yes/no),如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载(除非进行强制性的卸载)
Architecture:软件包结构,如基于`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;
Source:软件包的源代码名称;
Depends:软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开;
Pre-Depends:软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求;
Recommends:这个字段表明推荐的安装的其他软件包和库文件;
Suggests:建议安装的其他软件包和库文件。
control文件完整示例:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
postinst文件:包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作。
prerm文件:软件卸载前需要执行的脚本。
postrm文件:软件卸载后需要执行的脚本。
制作deb包过程:
1. 制作如下目录及文件
所有目录及文件:
mydeb
|----DEBIAN
|-------control
|-------postinst
|-------postrm
|----boot
|----- mysoftware
在任意目录下创建如上所示的目录及文件
1 2 3 4 5 6 7 |
|
control文件内容:
1 2 3 4 5 6 7 |
|
postinst文件内容( 软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postinst):
1 2 |
|
postrm文件内容( 软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postrm):
1 2 |
|
2. 完成第一步的制作目录及文件后可以给做好的mydeb目录进行打包成.deb包
1 2 |
|
现在完成了deb包的制作。
安装deb包:
1 2 |
|
卸载deb包:
1 2 3 |
|
查看deb包是否安装:
1 |
|
查看deb包文件内容:
1 |
|
查看当前目录某个deb包的信息:
1 |
|
解压deb包中所要安装的文件
1 2 |
|
解压deb包中DEBIAN目录下的文件(至少包含control文件)
1 2 3 4 |
|
另外,deb包安装后其信息会保存在/var/lib/dpkg/info目录下:
如果遇到某些卸载问题导致无法卸载时(如某些误删操作将一些由卸载时需要移除的文件删除了),可以尝试将这些文件删除掉。