Debian(Ubuntu)系统Deb包打包说明

Debian(Ubuntu)系统Deb包打包说明

什么是Deb包

DEB是Debian软件包格式的文件扩展名,跟Debian的命名一样,DEB也是因Debra Murdock而得名,她是Debian创始人Ian Murdock的太太。

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

Ubuntu dpkg命令

dpkg 命令是Debian Linux系统用来安装、删除、构建和管理Debian的软件包的实用工具。

如已有deb安装包(例如:object.deb) dpkg命令常用格式如下:

用法: dpkg [<选项>...] <命令> sample.deb

命令列表:

  • -i | --install

    安装软件包

  • -L |--listfiles

    查看软件包安装的所有文件

  • -s | --status

    查看软件包的详细信息

  • -r | --remove

    卸载软件包

  • c | --contents

    查看软件包的文件结构

  • -P | --print-avail

    显示可用的版本信息详情

    ...

Deb包的文件结构

包括DEBIAN和软件具体安装目录(如 /etc,/usr,/opt,/tmp 等)

deb包本身由三部分组成

组成 详细
数据包 包含实际安装的程序数据,文件名为"data.tar.XXX"
安装信息及控制包 包含deb的安装说明,标识,脚本等,文件名为"control.tar.gz"
二进制数据 包含文件头等信息,需要特殊软件才可以查看

DEBIAN 目录包含的文件

  • conffiles
  • contorl
  • copyright
  • changelog
  • md5sums
  • postinst(postinstallation)
  • postrm(postremove)
  • preinst(preinstallation)
  • prerm(preremove)

下面逐一阐述。

conffiles

配置文件清单列表

control

该文件主要描述软件包的名称(Package),版本(Version),Installed-Size (大小),Maintainer (打包人和联系方式),以及描述等。

字段 说明 样例
Package 名称 metrics-server,中间不能有空格
Version 版本 1.1.0 必须数字开头
Description 说明
Vendor 供应商 changkong
Maintainer 软件包维护人员 changkong changkong@163.com
Section 软件类别 default,utils, net, mail, text, x11
Priority 软件包对系统的重要程度 required, standard, optional, extra等;
Essential 是否是系统最基本的软件包 yes/no,若为yes,则不允许卸载(除非强制性卸载)
Architecture 软件所支持的平台架构 i386, amd64, m68k, sparc, alpha, mips64le,arm64,powerpc等
Installed-Size 软件包大小 118769
Depends 软件所依赖的其他软件包和库文件 若依赖多个软件包和库文件,采用逗号隔开
Pre-Depends 软件安装前必须安装、配置依赖性的软件包和库文件 常用于必须的预运行脚本需求
Recommends 推荐安装的其他软件包和库文件
Suggests 建议安装的其他软件包和库文件
License 版权信息 unknown
Homepage 网站信息 https://www.csdn.net

版权相关信息文件,非必须

changelog

版本变更记录文件 ,非必须

md5sums

所有文件清单的md5校验码信息,非必须

preinst

在Deb包文件解包之前(即软件安装前),将会运行该脚本。可以停止作用于待升级软件包的服务,直到软件包安装或升级完成

postinst

负责完成安装包时的配置工作。如新安装或升级的软件重启服务。软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以"#!/bin/sh"为首行。

例:

#!/bin/sh
if [ "$1" = "configure" ]; then
/Applications/MobileLog.app/MobileLog -install
/bin/launchctl load -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist 
fi
prerm

该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。

#!/bin/sh
if [[ $1 == remove ]]; then
/Applications/MobileLog.app/MobileLog -uninstall
/bin/launchctl unload -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist 
fi
postrm

负责修改软件包链接或文件关联,或删除由它创建的文件。软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以"#!/bin/sh"为首行。

#!/bin/sh
rm -rf /root/mydeb.log

Deb文件打包

按照上述文件组织打包的文件目录和打包配置文件,比如目录 ${FILE_DIR} 中

dpkg-deb -b ${FILE_DIR} ${FILE_NAME}.deb
相关推荐
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
一坨阿亮7 小时前
Linux 使用中的问题
linux·运维
wclass-zhengge9 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱9 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
力姆泰克10 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
BPM_宏天低代码11 小时前
低代码 BPA:简化业务流程自动化的新趋势
运维·低代码·自动化
sun00770011 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp11 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu