deb安装包
deb是Unix系统(虽然主要是Linux)下的安装包,基于tar包,因而本身会记录文件的权限(读/写/可执行)以及所有者/用户组。
因为Unix类系统对权限、所有者、组的严格要求,而deb格式安装包又常常会涉及到系统比较底层的操作linux防火墙设置,所以权限等的设置尤其重要。
deb组成
查看deb包含什么文件
两个命令结果都是一样的,查看deb安装包内有什么文件。
dpkg -c xxx.deb // 安装前根据deb文件查看
dpkg -L debname // 安装后根据软件名称查看
deb包本身有三部份组成
组成详尽
数据包
包含实际安装的程序数据linux教程,文件名为“data.tar.XXX”
安装信息及控制包
包含deb的安装说明,标示,脚本等,文件名为“control.tar.gz”
二补码数据
包含文件头等信息,须要特殊软件能够查看
deb本身可以使用不同的压缩方法.tar格式并不是一种压缩格式,而是直接把分散的文件和目录集合在一起linux环境qt程序打包发布,并记录其权限等数据信息。之前提到过的data.tar.XXX,这儿XXX就是经过压缩后的后缀名.deb默认使用的压缩格式为gzip格式,所以最常见的就是data.tar.gz。常有的压缩格式还有bzip2和lzmalinux环境qt程序打包发布,其中lzma压缩率最高,但压缩须要的CPU资源和时间都比较长
详尽介绍:
控制文件描述
control
用了记录软件标示,版本号,平台,依赖信息等数据
preinst
在解包data.tar.gz前运行的脚本
postinst
在解包数据后运行的脚本
prerm
卸载时,在删掉文件之前运行的脚本
postrm
在删掉文件以后运行的脚本
备注:
-inst是install(安装)的简写
-pre是表示XX之前的前缀
-post是表示XX以后的前缀
-rm是remove(移除)的简写
安装&移除
deb包安装
dpkg -i xxx.deb
deb包移除
dpkg -r debname
dpkg -S filepath
dpkg -X xxx.deb dirname
制做deb流程打算好可执行的二补码文件
这个二补码文件要可执行,提早要考虑兼容性,假如程序有目录要完整的一个程序目录。
这儿只拿一个单独的二补码文件打包。测试文件下载
新建软件文件夹
我们测试名称为MyDeb
新建一个名为DEBIAN文件夹
此文件夹显存放控制信息
在DEBIAN里新建一个文本文档,名为control,编码为utf-8,内容如下所示:
事例:
Package: MyDeb
Version: 1.0.0-2018.01.11
Section: Software
Priority: optional
Depends:
Suggests:
Architecture: i386
Installed-Size: 4096
Maintainer: gatieme
Provides: bioinfoserv-arb
Description: xxx
我们创建一个简单的。
package: MyDeb #安装包的名称
version: 1.0.0 #版本
architecture: i386 #平台
maintainer: young #维护者
description: you can description the deb #描述安装包的信息
之后我们创建对应的二补码包安装完成后的路径信息放置在DEBIAN的同级目录下,也就是把当前的目录当作根(“/”)目录,制做完成后安装时,当前目录下不仅DEBIAN目录的其他目录还会被默认安装到系统的“/”目录下。
下边是一个程序目录的反例。
|——mydeb
|————usr
|————bin
|——可执行文件(安装后,就在你的/usr/bin生成相应的可执行文件)
|————share
|————icons
|——deb.png(图标文件生成到/usr/share/icons/)
|————applications
|——deb.desktop(桌面文件生成到/usr/share/applications/)
|————DEBIAN(大写、用来制作打包文件)
|————control(描述deb包的信息必须的文件)
完整实验事例目录结构:
MyDeb
├── DEBIAN
│ └── control
├── opt
│ └── MyDeb
│ ├── heart
│ └── heart.desktop
└── usr
├── bin
│ └── heart -> /home/vincent/桌面/MyDeb/opt/MyDeb/heart
└── share
├── applications
│ └── heart.desktop
└── icons
└── heart_98.png
8 directories, 6 files
打包
sudo dpkg -b MyDeb/ MyDeb-linux-amd64.deb