deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。
由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。
deb包使用方法
dpkg -<span>c</span> xxx.deb <span>// 安装前根据deb文件查看</span>dpkg -<span>L</span> debname <span>// 安装后根据包名查看</span>dpkg -i xxx.deb <span>//安装deb包,如果提示错误,可以加参数—force-all强制安装,但不推荐这样做</span>dpkg -r debname <span>//移除deb包</span>dpkg -<span>S</span> filepath <span>//查看某个文件属于哪个deb包</span>dpkg -<span>X</span> xxx.deb dirname <span>//释放安装内容到dirname目录中</span>dpkg -e xxx.deb <span>//释放控制信息到当前目录下的DEBIAN子目录中</span>
deb包的数据组成
deb包里面的结构:DEBIAN目录 和 软件具体安装目录(模拟安装目录)(如etc, usr, opt, tmp等)。
在DEBIAN目录中至少有control文件,还可能有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。
控制文件 描述
control 用了记录软件标识,版本号,平台,依赖信息等数据
preinst 在解包data.tar.gz前运行的脚本
postinst 在解包数据后运行的脚本
prerm 卸载时,在删除文件之前运行的脚本
postrm 在删除文件之后运行的脚本
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文件完整示例:
<span>Package:</span> <span>mysoftware</span><span>Version:</span> <span>2016</span><span>-02</span><span>-26</span><span>Section:</span> <span>free</span><span>Priority:</span> <span>optional</span><span>Depends:</span> <span>libssl.0.0.so,</span> <span>libstdc++2.10-glibc2.2</span><span>Suggests:</span> <span>Openssl</span><span>Architecture:</span> <span>i386</span><span>Installed-Size:</span> <span>66666</span><span>Maintainer:</span> <span>Simon</span> <span>@</span> <span>newdivide7037#gmail.com</span><span>Provides:</span> <span>mysoftware</span><span>Description:</span> <span>just</span> <span>for</span> <span>test</span> <span>(此处必须空一行再结束)</span>
使用dpkg命令制作deb包
制作如下目录及文件:
control文件内容:
postinst文件内容:
<span># !/bin/sh</span><span>echo</span> <span>\"my deb\"</span> >/home/mydeb.log
postrm文件内容:
<span># !/bin/sh</span><span>rm</span> -rf /home/mydeb.log
完成第一步的制作目录及文件后可以给做好的mydeb目录进行打包成.deb包
$ dpkg -b mydeb mydeb.deb <span>#第一个参数为将要打包的目录名,</span> <span>#第二个参数为生成包的名称</span>
现在完成了deb包的制作。