deb安装包的制作及dpkg命令

deb安装包的制作

介绍

deb包是Debian软件包格式,文件扩展名为.deb。是Debian系统(包含Debian和Ubuntu等)专属安装包格式。

deb包在Linux操作系统中类似于windows中的软件包(exe),几乎不需要什么复杂的编译即可通过鼠标点击安装使用。

制作deb包的核心文件(夹)

  • DEBIAN 文件夹
  • control 文件,位于DEBIAN文件夹中,主要包含deb包的安装描述信息
  • preinit 文件(可选),位于DEBIAN文件夹中,安装处理文件,在解包前执行
  • postinit 文件(可选),位于DEBIAN文件夹中,安装处理文件,在解包后执行
  • prerm 文件(可选),位于DEBIAN文件夹中,卸载处理文件,在删除关联文件前执行
  • postrm 文件(可选),位于DEBIAN文件夹中,卸载处理文件,在删除关联文件后执行

目录结构如下:

	/DEBIAN/
	/DEBIAN/control
	/DEBIAN/preinit(可选)
	/DEBIAN/postinit(可选)
	/DEBIAN/prerm(可选)
	/DEBIAN/postrm(可选)
	/opt/(可选)
	/usr/lib(可选)

步骤

1. 创建deb包的文件夹

在制作deb包时,该文件夹是不会打包的,而是会把该文件夹当作是系统的根目录,因此也可以称该文件夹为根文件夹或根目录,里面的所有文件和文件夹(除DEBIAN外)在安装时都会按照其在根文件夹的相对路径安装到Linux系统中

mkdir myApp

2. 在deb包根路径中创建DEBIAN文件夹

cd myApp
mkdir DEBIAN

3. 创建control

cd DEBIAN
touch vi control

control文件的内容

Package: AppName
Version: 1.0
Section: Application
Priority: optional
Architecture: armhf
Maintainer: -
Description: the application description.

说明:
Package: 软件包的名称
Version: 版本号
Section: 软件的类别,如 Utils, Net,Application,Library
Priority: 软件对于系统的重要程度,如 required, standard, optional, extra
Architecture: 软件包结构,如基于i386, amd64,armhf
Maintainer: 软件维护人员
Description: 描述

4. 创建 preinit、postinit、prerm、postrm 等文件

根据实际需要创建相应的文件,在文件中编写需要执行的脚本
例如:
创建postinit文件

touch postinit

postinit的内容

sudo ldconfig

由于这几个文件是需要在安装或卸载时执行的,因此需要给这几个文件加上可执行的权限

sudo chmod a+x 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包文件夹所在的目录,执行打包的命令

sudo dpkg -b 打包的目录 deb安装包文件名称

dpkg命令的使用

一、安装

  sudo dpkg -i deb文件名

示例:

sudo dpkg -i slave-1.0.0.deb

二、卸载安装包

  sudo dpkg -P 安装包名称

示例:

sudo dpkg -P slave

三、查看程序安装包的信息

  sudo dpkg -s 安装包名称

示例:

sudo dpkg -s slave

四、编译打包deb文件

sudo dpkg -b 打包的目录 deb安装包文件名称

示例:

sudo dpkg -b slave-builder slave-1.0.0.deb
posted @ 2023-03-06 16:38  JeremyYu  阅读(1318)  评论(0编辑  收藏  举报