Advertisement

DEB安装包自定义制作方法

阅读量:

一个deb包由debian-binary、control.tar.gz(或control.tar.xz)和data.tar.gz(或data.tar.xz)三个文件组成,支持多架构安装。控制文件(control)包含软件包信息如版本、架构、维护者等,预安装脚本(preinst)、安装脚本(postinst)、卸载脚本(prerm、postrm)用于管理安装流程,数据文件(data)包含软件程序和数据。制作流程包括创建目录结构、编写控制文件、生成copyright文件、创建预安装和后安装脚本、复制程序文件、生成debian-binary文件,最后进行打包操作。

deb包的结构

一个标准格式文件(AR),其中包含三个组成部分:二进制文件、控制文件以及数据文件(XZ格式,或GZ格式)。

deb解压到当前目录 : ar -x xxx.deb

解压之后的文件列表如下:

control.tar.gz(或者control.tar.xz)

该压缩文件中包含有软件包的控制信息、依赖关系以及安装脚本等内容。当采用gzip压缩算法时,文件名设置为control.tar.gz;而采用xz压缩算法时,文件名则为control.tar.xz。

control.tar.gz解压到当前目录:tar -xvf control.tar.gz

解压之后的文件列表如下:

control文件:用于存储软件标识信息、版本信息、操作系统平台以及依赖信息数据等数据。此文件为必选文件,后续文件均为可选文件。

2、preinst文件:安装前执行的shell脚本,用于解压data.tar.gz前的脚本

3、postinstall文件:在安装完成后运行的shell脚本,即在解压data.tar.gz之后运行的脚本

4、prerm文件:卸载之前执行的shell脚本,即在删除文件之前运行的脚本

5、postrm文件:卸载之后执行的shell脚本,即在删除文件之后运行的脚本

6、copyright文件:版权声明

7、md5sums文件:data压缩包内各文件的md5校验值,此文件是非必须的

control文件字段规范

Package:软件名称
Version:软件版本
Section:软件分类
Priority:软件包优先级分为:
required:必需软件包(删除将导致系统完全损坏);
important:必要软件包(最低限度的必要工具);
standard:默认安装且不会与同级别包冲突的软件包;
optional:可能与其他软件包冲突的普通软件包。
Architecture:支持的硬件架构,常用的架构包括x86_64、x86、arm64和armhf。尽管不同架构名称可能对应完全兼容的架构,但dpkg仍会拒绝安装不符合架构要求的deb包,例如arm64与armv8、armhf与armv7a视为不兼容。若设置为"all",则表示与体系结构无关的软件包,如shell、Perl脚本和文档等;
Multi-Arch:软件包在多架构安装中的表现方式:
no:省略字段时的默认值,通常无需显式设置;
same:可与自身安装,但不能用于满足自身不同架构的依赖;
foreign:不能与自身安装,但可允许满足不同架构的非限定依赖(若依赖带有显式架构限定符,则忽略"foreign");
allowed:允许反向依赖通过":any"限定包名表示接受来自不同架构的依赖,但无其他作用。
Maintainer:软件包维护者
Description:软件包描述(仅在已上传到apt源时显示)
Essential:是否为系统基本软件包(yes/no),若为yes,则不允许强制卸载
Source:软件包源代码名称
Depends:软件所依赖的其他软件包和库文件(多个用逗号分隔)
Pre-depends:安装前必须安装的软件包和库文件,通常用于配置预运行脚本
Recommends:推荐安装的软件包和库文件
Suggests:建议安装的软件包和库文件
Homepage:软件项目主页

(注意 : control文件最后需要空一行)

案例如下:

data.tar.gz(或者data.tar.xz)

该压缩文件包含软件的所有可执行程序和数据文件。当采用gzip压缩[算法]时,文件名为data.tar.gz;而采用xz压缩算法时,文件名为data.tar.xz。

control.tar.gz解压到当前目录:tar -xvf data.tar.gz

解压之后的文件列表如下:

debian-binary

此文件以字符串的形式保存deb包格式的版本号;

deb包制作流程

1、创建包目录结构:

mkdir -p deb_pkg

mkdir -p deb_pkg/control

mkdir -p deb_pkg/data

2、创建control文件

cd deb_pkg/control

touch control

echo "Package:abc_software" >> control

echo "Version:2.3.15" >> control

echo "Section:Software" >> control

输出该ECHO命令将跳转至以下链接,显示可选的Priority字段值并将其发送至指定控制台:

echo "Architecture:amd64" >> control

echo "Maintainer:tangzhangyin" >> control

echo "Description:abc客户端软件包" >> control

echo " " >> control

3、创建copyright文件

cd deb_pkg/control

touch copyright

echo "abc_software" >> copyright

echo "Copyright : Copyright (C) 2021 abc " >> copyright

echo "Author : tangzhangyin" >> copyright

echo "Concact : tangzhangyin@163.com" >> copyright

3、创建preinst文件

cd deb_pkg/control

touch preinst

echo "#!/bin/bash" >> preinst

echo "echo "start to install abc_software" " >> preinst

4、创建postinst文件

cd deb_pkg/control

touch postinst

echo "#!/bin/bash" >> postinst

echo "echo "installing abc_software" " >> postinst

5、复制程序文件到data目录

cd deb_pkg/data

mkdir -p usr/bin/

cp xxx.bin usr/bin/

6.创建debian-binary文件

echo "2.0" > deb_pkg/debian-binary

7.deb打包操作

cd deb_pkg/control

tar -czvf ../control.tar.gz -C control .

cd deb_pkg/data

tar -czvf ../data.tar.gz data .

cd deb_pkg/

rm -rf deb_pkg/control

rm -rf deb_pkg/data

ar -r abc_software.deb debian-binary control.tar.gz data.tar.gz

在控制文件和数据目录下,应排除控制文件夹和数据文件夹。

全部评论 (0)

还没有任何评论哟~