linux下制作deb安装包

更多精彩内容
👉内容导航 👈
👉Qt开发经验 👈

1 概述

.deb包是Debian软件包格式,主要用于Debian及其衍生发行版(如Ubuntu)中。deb包实际是一个压缩包。

linux下deb包主要分为源代码包和二进制包;

  • Debian源包包含用于构造一个Debian源包的源代码或者更多的二进制包。
  • 二进制包里面包含的就是二进制文件,例如可执行程序、二进制库文件等;

本文主要讲如何制作二进制包,将Qt编译生成的可执行程序制作为deb安装包。

Qt编译生成的可执行程序打包依赖库看这里

演示环境:

环境版本
系统ubuntu22.04
QtQt5.14.2

2 deb二进制包结构

制作deb二进制包的文件夹主要由两部分组成:

  1. 软件包元信息:如控制文件,软件包的名称和版本,以及在安装/卸载之前、之中或之后使用的脚本。
  2. 软件包数据:包含软件包中所有要解压的文件,包括可执行文件、库和文档等。
mhf@mhf-virtual-machine:~/Code/bin64$ tree
.
├── DEBIAN     // 元信息
│   └── control // 控制文件
├── opt        // 软件包数据(软件安装后的路径,可以有多个)
│   └── untitled1   // 安装deb后会将untitled1文件夹安装到系统的/opt路径下
│       ├── AppRun -> untitled1
│       ├── default.desktop
│       ├── default.png
│       ├── doc
│       │   ├── libcap2-bin
│       │   │   └── copyright
│       │   ├── libdbus-1-3
│       │   │   └── copyright
│       │   ├── libkeyutils1
│       │   │   └── copyright
│       │   ├── liblzma5
│       │   │   └── copyright
│       │   └── libpcre3
│       │       └── copyright
│       ├── lib

  • DEBIAN文件夹为元数据存放文件夹,文件夹中最少要包含一个control文件,可以选择增加维护脚本文件,例如preinstpostinstprermpostrm
  • 如果想将程序安装到/opt路径,就创建一个opt文件夹,将需要安装到系统/opt路径下的文件放到opt文件夹中。如果想将程序安装到系统的/usr路径,就创建一个usr文件夹,在usr文件夹中添加需要安装的文件。

例如: vim_8.2.3995-1ubuntu2.21_amd64.deb包解压后如下所示:

在这里插入图片描述

3 控制文件

DEBIAN/control控制文件字段如下所示:

包含必须的字段就可以构建deb包。

字段说明必要性
Package二进制包的名称。必须以字母或数字开头必须
Source源码包的名称
Version软件版本必须
Section包被分类到的应用程序区域。推荐
Priority优先级,required、important、standard、optional、extra推荐
Architecture软件架构,amd64/x86-64、i386、armhf等必须
Essential这是一个布尔字段,可能只出现在二进制包的控制文件或源包模板控制文件的二进制包节中。
Depends声明安装依赖
Installed-Size给出了安装指定包所需的磁盘空间总量的估计值
Maintainer软件包维护者的姓名和电子邮件地址必须
Description安装包描述信息,换行后以一个空格开头必须
Homepage此软件包的网站URL
Built-Using软件包构建工具
  • 示例:如下所示为vim_8.2.3995-1ubuntu2.21_amd64.deb包的控制文件;
Package: vim
Version: 2:8.2.3995-1ubuntu2.21
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 3931
Depends: vim-common (= 2:8.2.3995-1ubuntu2.21), vim-runtime (= 2:8.2.3995-1ubuntu2.21), libacl1 (>= 2.2.23), libc6 (>= 2.34), libgpm2 (>= 1.20.7), libpython3.10 (>= 3.10.0), libselinux1 (>= 3.1~), libsodium23 (>= 1.0.14), libtinfo6 (>= 6)
Suggests: ctags, vim-doc, vim-scripts
Provides: editor
Section: editors
Priority: optional
Homepage: https://www.vim.org/
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.
 .
 Many new features have been added: multi level undo, syntax
 highlighting, command line history, on-line help, filename
 completion, block operations, folding, Unicode support, etc.
 .
 This package contains a version of vim compiled with a rather
 standard set of features.  This package does not provide a GUI
 version of Vim.  See the other vim-* packages if you need more
 (or less).
Original-Maintainer: Debian Vim Maintainers <team+vim@tracker.debian.org>

  • 简单模板:
Package: hello
Version: 1.0.0
Priority: optional
Architecture: amd64
Installed-Size: 4096
Maintainer: 开发者名称
Description: 软件描述信息

4 维护脚本

DEBIAN文件夹为元数据存放文件夹,文件夹中最少要包含一个control文件,可以选择增加维护脚本文件,例如preinstpostinstprermpostrm;可用于运行、升级、删除和清理垃圾文件等。

维护脚本都是shell脚本,必须是可执行的,以#!开头;

  • preinst:deb安装前执行;(例如:可用于安装依赖,创建环境)
  • postinst:deb安装完成之后执行;(例如:安装完成之后自动运行程序)
  • prerm:卸载之前执行;
  • postrm:卸载之后执行;
  • 示例:vim_8.2.3995-1ubuntu2.21_amd64的preinst脚本
#!/bin/sh
set -e
# Automatically added by dh_installdeb/13.6ubuntu1
dpkg-maintscript-helper symlink_to_dir /usr/share/doc/vim vim-common 2:8.0.1451-1\~ vim -- "$@"
# End automatically added section

5 制作deb安装包

  • 准备好可运行的可执行程序及相关依赖库,例如Qt编译生成的程序并且打包完成依赖库

在这里插入图片描述

  • 如果我想将debPro文件夹下所有文件在安装时安装到/opt路径下,那就在debPro文件夹中创建opt、DEBIAN两个文件夹,然后在opt文件夹中创建一个hello文件夹;
  • 将debPro文件夹下除了opt、DEBIAN两个文件夹外的内容复制到./opt/hello文件夹下;
  • 文件结构如下所示:

在这里插入图片描述

在这里插入图片描述

  • 打开control文件,添加描述信息:

在这里插入图片描述

  • 然后使用dpkg -b ./ hello.deb或者dpkg-deb -b ./ hello.deb命令将./文件夹下内容制作为hello.deb安装包;

在这里插入图片描述

  • 制作完成后使用dpkg -i hello.deb命令安装验证;

!在这里插入图片描述

  • 使用dpkg -l hello查看安装后hello程序的信息;

在这里插入图片描述

6 参考地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mahuifa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值