OS / Linux / 制作 deb 包

一、deb 简介

deb 是 debian 系列系统下的安装包,基于 tar 包,因此本身会记录文件的权限(读 / 写 / 可执行)以及所有者 / 用户组。

由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。

二、deb包使用方法

dpkg -c xxx.deb // 安装前根据 deb 文件查看
dpkg -L debname // 安装后根据包名查看
dpkg -i xxx.deb // 安装 deb 包,如果提示错误,可以加参数 —force-all 强制安装,但不推荐这样做
dpkg -r debname // 移除 deb 包
dpkg -S filepath // 查看某个文件属于哪个 deb 包
dpkg -X xxx.deb dirname // 释放安装内容到 dirname 目录中
dpkg -e xxx.deb  // 释放控制信息到当前目录下的 DEBIAN 子目录中

三、deb 包的数据组成

deb 包里面的结构:DEBIAN 目录软件具体安装目录(模拟安装目录)(如etc、usr、opt、tmp等)。

在 DEBIAN 目录中至少有 control 文件,还可能有 postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright、changlog (修订记录)和 conffiles 等。


控制文件描述

control:用了记录软件标识,版本号,平台,依赖信息等数据。

preinst:在解包 data.tar.gz 前运行的脚本。

postinst:在解包数据后运行的脚本。

prerm:卸载时,在删除文件之前运行的脚本。

postrm:在删除文件之后运行的脚本。

1、control文件

描述软件包的名称(Package),版本(Version),描述(Description)等,是 deb 包必须剧本的描述性文件,以便于软件的安装管理和索引。为了能将软件包进行充分的管理,可能还具有以下字段:

Section:申明软件的类别,常见的有`utils’, `net’, `mail’, `text’, `x11′ 等;

Priority:申明软件对于系统的重要程度,如`required’, `standard’, `optional’, `extra’ 等;

Essential:申明是否是系统最基本的软件包(选项为 yes / no),如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载(除非进行强制性的卸载)

Architecture:软件包结构,如基于`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;

Source:软件包的源代码名称;

Depends:软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开;

Pre-Depends:软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求;

Recommends:这个字段表明推荐的安装的其他软件包和库文件;

Suggests:建议安装的其他软件包和库文件。

control文件完整示例:

Package: cmakeBaseQt 
Version: 1.0.0 
Section: free 
Priority: optional 
Essential: no 
Architecture: amd64
Maintainer: xclsoftware@163.com 
Provides: xcl 
Description: Basic qt project
                    (此处必须空一行再结束)

四、使用 dpkg 命令制作 deb 包

制作如下目录及文件:

postinst文件内容:

# !/bin/sh
if [ "$1" = "upgrade" ] || [ "$1" = "install" ];then
    echo "install"
fi

postrm文件内容:

# !/bin/sh
if [ "$1" = "upgrade" ] ; then
    echo "upgrade"
elif [ "$1" = "remove" ] || [ "$1" = "purge" ] ; then
    echo "remove"
fi

完成第一步的制作目录及文件后可以给做好的 cmake_base_qt 目录进行打包成 .deb 包

TARGET_NAME=cmake_base_qt
ARCHITECTURE=amd64
VERSION=1.0.0

cp ./code/build/${TARGET_NAME} ./package/etc/cmake_base_qt
sudo dpkg-deb -b ./package ./${TARGET_NAME}-${ARCHITECTURE}-${VERSION}.deb

echo end

现在完成了deb包的制作。

参考:linux下制作deb的方法总结 - 知乎

源代码:GitHub - xuchanglong/cmake_base_qt: 提供最基本的使用cmake的打包工程,包括qrc、deb的制作。

(SAW:Game Over!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值