DEB打包方法简介

2021-10-19
update 2021-10-19

简单介绍deb打包的方法,包括目录树格式和打包注意事项。

文件结构

首先创建一个目录作为工作空间,目录名可以使用软件名,deb包所有文件都将会存在这个目录下,这个目录就是安装时的根目录/。一个工作空间的目录树如下:

  PackageDIR
	├─DEBIAN
    ├─opt
    │  └─kushidou-touchscreen
    │      └─desktops
    ├─usr
    │  ├─bin
    │  └─share
    └─var

其中,DEBIAN目录放置了安装包的信息、配置、控制文件等,其他文件都放在目录的相对位置里,安装时就会根据这些相对位置,把程序与文件直接拷贝到对应的地方。

DEBIAN

DEBIAN目录下有一个control文件和至多四个脚本文件。

control

control文件用于写入安装包的识别信息,包括包名、版本、作者、简介等。没有严格的顺序要求。表格中列出常用的关键字和作用,图片展示了一个软件包的control信息。control文件最后需要添加一个空行。

NAME Description
Package 软件名,dpkg -l 列出的名字
Version 版本号-修订号
Section 软件类型,比如mail, test, x11等
Priority 优先级/重要性,比如optional 可选的
Architecture 软件架构,比如x86, arm64
Depends 依赖环境,用 , 隔开,用(>=< )指定版本号
Suggests 推荐安装,指非必要依赖,可以提供更多功能
Maintainer 作者 <邮箱或者其他联系方式>
Descritprion 简介,可以换行书写

image-20211019094048011

额外脚本

DEBIAN目录下之多放置四个可执行脚本,包括安装前preinst安装后postinst卸载前prerm卸载前postrm,四个脚本都需要以#!/bin/bash开头,内容与普通脚本无异,文件名不需要后缀。

这些脚本主要实现复制快捷方式、建立软连接、添加环境变量、添加额外的文件和配置等操作。这些脚本是以root身份运行,注意他们创建文件的访问权限。inst创建的文件无法被dpkg删除,需要使用rm脚本自行处理。

此外postinst可以用来启动已安装的程序,prerm常用来停止正在运行的程序。

md5sums

为了防止安装包被篡改,可以计算每个二进制文件的md5值存放在这个文件里。非必要。

打包

所有文件配置完成后,进入工作空间上级目录,执行指令

dpkg -b ./PackageDIR packagename.deb

deb包命名的一般规则为 软件名_版本-修订号_架构.deb

其他信息

一般公开发行的安装包应该包含其他信息,如版权信息、changelog、doc、man手册等。这些文件都有各自的编撰格式,主要是为了方便系统识别和二次开发,与用户直接体验无关。

Avatar
Kushidou 什么都学,却什么都不精通的一个小白:)