Featured image of post 记一次deb打包

记一次deb打包

尝试打包一下自己写的Qt程序

了解打包目录规则

deb打包目录结构如下:

1
2
3
4
5
6
package
├── DEBIAN
│   ├── control
│   └── postinst
├── opt
└── usr

目录下DEBIAN目录下是安装信息及控制脚本。

脚本文件可以存在这四个脚本

  • preinst 文件于软件包安装之前会被调用

  • postinst 文件于软件包安装之后被调用

  • prerm 文件于软件包卸载之前调用

  • postrm 文件于软件包卸载之后调用

control文件

control文件的基本结构如下

1
2
3
4
5
6
Package: earth-wallpaper
Version: 1
Architecture: amd64
Maintainer: ambition-echo <ambition_echo@outlook.com>
Description: 软件包描述
Depends: 软件包依赖

要注意软件包名只能是小写字母以及"+"、"-“符号的组合。

postinst脚本

postinst以及其他三个脚本都是shell脚本,按需添加即可

postinst脚本示例

1
2
3
#!/bin/bash
cd /opt/earth_wallpaper
chmod +x /opt/earth_wallpaper/earth_wallpaper

这个脚本会在安装成功之后给安装的可执行文件earth_wallpaper赋予可执行权限。

其他脚本类似。

目录

打包目录下的optusr对应系统中的/opt/usr文件夹,可以根据实际情况创建其他的一些文件夹,deb包安装时会按照目录结构将里面的内容复制到系统对应位置。

比如说我将编译生成的需要的文件放到对应位置,再添加一个deaktop文件,得到如下的目录结构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
package/
├── DEBIAN
│   ├── control
│   └── postinst
├── opt
│   └── earth_wallpaper
│       ├── earth_wallpaper
│       ├── icon.png
│       ├── scripts
│       │   ├── 0.py
│       │   └── 1.py
│       └── template
│           └── config
└── usr
    └── share
        └── applications
            └── earth_wallpaper.desktop

这样安装的时候就会把我的程序各个相应的组件安装到系统对应的位置。

开始打包

准备好打包目录之后就可以使用dpkg开始打包了

1
dpkg -b 打包目录 软件包.deb

打包成功

这样一来一个简单的deb包就打包成功啦!

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计