linux的程序打包deb

发布时间 2023-05-24 19:00:54作者: tomato-haha

deb安装包
deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。
由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。

deb组成
查看deb包含哪些文件

两个命令结果都是一样的,查看deb安装包内有哪些文件。

dpkg -c xxx.deb // 安装前根据deb文件查看
dpkg -L debname // 安装后根据软件名称查看
1
2
3
deb包本身有三部分组成

组成 详细
数据包 包含实际安装的程序数据,文件名为“data.tar.XXX”
安装信息及控制包 包含deb的安装说明,标识,脚本等,文件名为“control.tar.gz”
二进制数据 包含文件头等信息,需要特殊软件才能查看
deb本身可以使用不同的压缩方式. tar格式并不是一种压缩格式,而是直接把分散的文件和目录集合在一起,并记录其权限等数据信息。之前提到过的 data.tar.XXX,这里 XXX 就是经过压缩后的后缀名. deb默认使用的压缩格式为gzip格式,所以最常见的就是 data.tar.gz。常有的压缩格式还有 bzip2 和 lzma,其中 lzma 压缩率最高,但压缩需要的 CPU 资源和时间都比较长

详细介绍:

data.tar.gz
包含的是实际安装的程序数据,而在安装过程中,该包里的数据会被直接解压到根目录(即/),因此在打包之前需要根据文件所在位置设置好相应的文件/目录树。
control.tar.gz
则包含了一个deb安装的时候所需要的控制信息。
控制文件 描述
control 用了记录软件标识,版本号,平台,依赖信息等数据
preinst 在解包data.tar.gz前运行的脚本
postinst 在解包数据后运行的脚本
prerm 卸载时,在删除文件之前运行的脚本
postrm 在删除文件之后运行的脚本
备注:
- inst是install(安装)的缩写
- pre是表示XX之前的前缀
- post是表示XX之后的前缀
- rm是remove(移除)的缩写

安装&移除
deb包安装

dpkg -i xxx.deb
1
deb包移除

dpkg -r debname
1
查看某个文件属于哪个安装包
dpkg -S filepath
1
指定安装路径
dpkg -X xxx.deb dirname
1
制作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
1
2
3
4
5
6
7
8
9
10
11
我们创建一个简单的。

package: MyDeb #安装包的名称
version: 1.0.0 #版本
architecture: i386 #平台
maintainer: young #维护者
description: you can description the deb #描述安装包的信息
1
2
3
4
5
然后我们创建对应的二进制包安装完成后的路径信息放置在DEBIAN的同级目录下,也就是把当前的目录当成根(“/”)目录,制作完成后安装时,当前目录下除了DEBIAN目录的其他目录都会被默认安装到系统的“/”目录下。

下面是一个程序目录的例子。

|——mydeb
|————usr
|————bin
|——可执行文件(安装后,就在你的/usr/bin生成相应的可执行文件)
|————share

|————icons

|——deb.png(图标文件生成到/usr/share/icons/)

|————applications
|——deb.desktop(桌面文件生成到/usr/share/applications/)

|————DEBIAN(大写、用来制作打包文件)
|————control(描述deb包的信息必须的文件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
完整实验例子目录结构:

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
打包

sudo dpkg -b MyDeb/ MyDeb-linux-amd64.deb
————————————————
版权声明:本文为CSDN博主「FlyWine」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wf19930209/article/details/79277091