使用的Linux系统
- Debian
- Ubuntu
打包流程说明
1. 工作空间
首先创建一个目录作为工作空间,目录名可以使用软件名,deb包所有文件都将会存在这个目录下,这个目录就是安装时的根目录/。一个工作空间的目录树如下:
1 | PackageDIR |
其中,DEBIAN目录放置了安装包的信息、配置、控制文件等,其他文件都放在目录的相对位置里,安装时就会根据这些相对位置,把程序与文件直接拷贝到对应的地方。
2. DEBIAN文件夹
DEBIAN目录下有一个control文件和至多四个脚本文件。
1 | /DEBIAN/ |
control 文件,位于DEBIAN文件夹中,主要包含deb包的安装描述信息
preinit 文件(可选),位于DEBIAN文件夹中,安装处理文件,在解包前执行
postinit 文件(可选),位于DEBIAN文件夹中,安装处理文件,在解包后执行
prerm 文件(可选),位于DEBIAN文件夹中,卸载处理文件,在删除关联文件前执行
postrm 文件(可选),位于DEBIAN文件夹中,卸载处理文件,在删除关联文件后执行
3. control文件
control文件用于写入安装包的识别信息,包括包名、版本、作者、简介等。没有严格的顺序要求。表格中列出常用的关键字和作用,图片展示了一个软件包的control信息。control文件最后需要添加一个空行。
NAME | Description |
---|---|
Package | 软件包的名称, dpkg -l 列出的名字 |
Version | 版本号-修订号 |
Section | 软件类型,比如mail, test, x11等 |
Priority | 优先级/重要性,比如optional 可选的 |
Architecture | 软件架构,比如x86, arm64 |
Depends | 依赖环境,用 , 隔开,用(>=< )指定版本号 |
Suggests | 推荐安装,指非必要依赖,可以提供更多功能 |
Maintainer | 作者(软件维护人员) <邮箱或者其他联系方式> |
Descritprion | 简介,可以换行书写 |
4. 打包命令
所有文件配置完成后,进入工作空间上级目录,执行指令
1 | dpkg -b ./PackageDIR packagename.deb |
打包示例
1. 创建deb包的文件夹
在制作deb包时,该文件夹是不会打包的,而是会把该文件夹当作是系统的根目录,因此也可以称该文件夹为根文件夹或根目录,里面的所有文件和文件夹(除DEBIAN外)在安装时都会按照其在根文件夹的相对路径安装到Linux系统中
1 | mkdir myApp |
2. 在deb包根路径中创建DEBIAN文件夹
1 | cd myApp |
3. 创建control
1 | cd DEBIAN |
control文件的内容
1 | Package: AppName |
4. 创建 preinit、postinit、prerm、postrm 等文件
根据实际需要创建相应的文件,在文件中编写需要执行的脚本,例如:
1 | 创建postinit文件 |
5. 复制关联文件到deb包中
将deb包根目录当作是Linux系统的根目录,将需要安装的程序或文件按照指定路径存放。
示例1
- 可执行程序 demo 需要安装到Linux系统的 /opt/ 中,则在deb包根目录中创建一个 opt 文件夹,并把 demo 复制到该文件夹中。
示例2
- 调用库 libmyapp.so 需要安装到Linux系统的 /usr/lib 中,则在deb包根目录中创建一个 usr 文件夹,然后在 usr 文件夹中再创建 lib 文件夹,最后将 libmyapp.so 文件复制到 /usr/lib 中
6. 打包生成deb包
切换当前目录到deb包文件夹所在的目录,执行打包的命令
1 | sudo dpkg -b 打包的目录 deb安装包文件名称 |
关于dpkg命令的使用
安装
1
2sudo dpkg -i deb文件名
sudo dpkg -i slave-1.0.0.deb卸载安装包
1
2sudo dpkg -P 安装包名称
sudo dpkg -P slave查看程序安装包的信息
1
2sudo dpkg -s 安装包名称
sudo dpkg -s slave编译打包deb文件
1
2sudo dpkg -b 打包的目录 deb安装包文件名称
sudo dpkg -b slave-builder slave-1.0.0.deb