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
相关推荐
热爱嵌入式的小许3 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
Pythonliu77 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我7 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
小O_好好学9 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥9 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
john_hjy10 小时前
11. 异步编程
运维·服务器·javascript
x晕x10 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人10 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
tangdou36909865511 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维
北京智和信通11 小时前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控