一文搞懂deb包 | 您所在的位置:网站首页 › 怎么提取插件deb包 › 一文搞懂deb包 |
转自: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 Package: mysoftware Version: 2016-02-26 Section: free Priority: optional Depends: libssl.0.0.so, libstdc++2.10-glibc2.2 Suggests: Openssl Architecture: i386 Installed-Size: 66666 Maintainer: Simon @ newdivide7037#gmail.com Provides: mysoftware Description: just for test (此处必须空一行再结束)
postinst文件:包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作。 prerm文件:软件卸载前需要执行的脚本。 postrm文件:软件卸载后需要执行的脚本。 非源码制作deb包 制作deb包过程: 1. 制作如下目录及文件 所有目录及文件: mydeb |----DEBIAN |-------control |-------postinst |-------postrm |----boot |----- mysoftware
在任意目录下创建如上所示的目录及文件 1 2 3 4 5 6 7 $ mkdir -p /home/mydeb # 在该目录下存放生成deb包的文件以及目录 $ mkdir -p /home/mydeb/DEBIAN #目录名必须大写 $ mkdir -p /home/mydeb/boot # 将文件安装到/boot目录下 $ touch /home/mydeb/DEBIAN/contro l # 必须要有该文件 $ touch /home/mydeb/DEBIAN/postinst # 软件安装完后,执行该Shell脚本 $ touch /home/mydeb/DEBIAN/postrm # 软件卸载后,执行该Shell脚本 $ touch /home/mydeb/boot/mysoftware # 所谓的“软件”程序,这里就只是一个空文件
control文件内容: 1 2 3 4 5 6 7 Package: mysoftware (软件名称,中间不能有空格) Version: 1 (软件版本) Section: free (软件类别) Prioritt: optional (软件对于系统的重要性) Architecture: amd64 (软件所支持的平台架构) Maintainer: xxx (打包人和联系方式) Description: mydeb (对软件的描述) (此处必须空一行再结束)
postinst文件内容( 软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postinst): 1 2 # !/bin/sh echo "my deb" >/home/mydeb.log
postrm文件内容( 软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postrm): 1 2 # !/bin/sh rm -rf /home/mydeb.log
2. 完成第一步的制作目录及文件后可以给做好的mydeb目录进行打包成.deb包 1 2 $ dpkg -b mydeb mydeb.deb #第一个参数为将要打包的目录名, #第二个参数为生成包的名称
现在完成了deb包的制作。 注:可以通过-Z和-z参数指定dpkg-deb生成deb时使用的压缩类型和压缩级别(0~9),默认压缩级别为6 通过源码制作deb1. 安装相关工具包 sudo apt-get install checkinstall build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev libglib2.0-dev libevent-dev2.下载需要的源码,并编译make 3. 用checkinstall生成deb sudo checkinstall管理deb包 安装deb包: 1 2 $ dpkg -i mydeb.deb # 将imysoftware复制到/boot目录下后,执行postinst # postinst脚本在/home目录下生成一个含有"mysoftware"字符的mydeb.log文件 卸载deb包: 1 2 3 $ dpkg -r mysoftware # 这里要卸载的包名为control文件Package字段所定义的 mysoftware。 # 将/boot目录mysoftware删除后,执行posrm, # postrm脚本将/home目录下的mydeb.log文件删除 查看deb包是否安装: 1 $ dpkg -s mysoftware # 这里要卸载的包名为control文件Package字段所定义的 mysoftware
查看deb包文件内容: 1 $ dpkg -c mydeb.deb
查看当前目录某个deb包的信息: 1 $ dpkg --info mydeb.deb
解压deb包中所要安装的文件 1 2 $ dpkg -X mydeb.deb mydeb # 第一个参数为所要解压的deb包,这里为 mydeb.deb # 第二个参数为将deb包解压到指定的目录,这里为 mydeb
解压deb包中DEBIAN目录下的文件(至少包含control文件) 1 2 3 4 $ dpkg -e mydeb.deb mydeb/DEBIAN # 第一个参数为所要解压的deb包, # 这里为 mydeb.deb # 第二个参数为将deb包解压到指定的目录, # 这里为 mydeb/DEBIAN 修复安装损坏的deb包由于某些原因(如误删操作将一些由卸载时需要移除的文件删除了),如果遇到某些卸载问题导致无法卸载时,可以尝试如下方法。 1. sudo dpkg --remove --force-all xx 2.deb包安装后其信息会保存在/var/lib/dpkg/info目录下,删除这些文件:
|
CopyRight 2018-2019 实验室设备网 版权所有 |