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 [email protected]
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
相关推荐
2302_7995257416 分钟前
【Linux】第十六章 分析和存储日志
linux·运维·服务器
愚润求学35 分钟前
【Linux】Ext系列文件系统
linux·运维·服务器·笔记
微刻时光43 分钟前
影刀RPA网页自动化总结
运维·人工智能·python·低代码·自动化·rpa·影刀rpa
2301_7875528743 分钟前
Lightpanda开源浏览器:专为 AI 和自动化而设计的无界面浏览器
运维·自动化
胖大和尚1 小时前
完整的 CentOS 6.10 虚拟机安装启动脚本
linux·运维·centos
酷爱码2 小时前
Nginx的核心功能--正向代理、反向代理、缓存和Rewrite
运维·nginx·缓存
菜鸟康3 小时前
Linux——CMake的快速入门上手和保姆级使用介绍、一键执行shell脚本
linux·运维·服务器
卷卷的小趴菜学编程3 小时前
Linux系统之----基础IO
linux·运维·服务器·文件·fopen·文件操作符·位图传递标志位
码上飞扬4 小时前
Java大师成长计划之第22天:Spring Cloud微服务架构
java·运维·云计算
simple_whu4 小时前
Ubuntu24.04编译ORB_SLAM的一系列报错解决
ubuntu·slam