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
相关推荐
影子2401几秒前
Windows Server2016 服务器安装JDK,一直卡在“应用程序正在为首次使用作准备,请稍候” ,导致jdk安装失败解决方案
运维·服务器·windows·jdk
养生技术人7 分钟前
Oracle OCP认证考试题目详解082系列第48题
运维·数据库·sql·oracle·database·开闭原则·ocp
_OP_CHEN35 分钟前
Linux 系统编程:(一)从历史演进到 XShell 远程登录实操
linux·运维·服务器·centos·unix·xshell
罗技1232 小时前
Docker 启动 Easysearch 时自定义初始密码的几种方式
运维·docker·容器
维尔切3 小时前
Nginx 反向代理与负载均衡
运维·nginx·负载均衡
知白守黑2673 小时前
反向代理和负载均衡
运维·负载均衡
杨云龙UP3 小时前
小工具大体验:rlwrap加持下的Oracle/MySQL/SQL Server命令行交互
运维·服务器·数据库·sql·mysql·oracle·sqlserver
阿巴~阿巴~3 小时前
使用 C 语言连接 MySQL 客户端(重点)
服务器·数据库·sql·mysql·ubuntu
CS_Zero4 小时前
【开发工具】Windows10&11远程Ubuntu18及以上桌面
笔记·ubuntu
iconball5 小时前
个人用云计算学习笔记 --18(NFS 服务器、iSCSI 服务器)
linux·运维·笔记·学习·云计算