Debian deb文件打包及例程

简介

deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb.。它类似于tar,把一堆的散装文件打包成一个整体,不同的是,deb需要有DEBIAN文件夹,里面包含了一些版本文件、安装前后所需要执行的一些脚本文件和版权等信息。需要注意的是打包deb并不负责编译,

结构组成

一个完整的deb包组成如下:

|---DEBIAN
	|---control
	|---postinst
	|---postrm
	|---preinst
	|---prerm
	|---copyright
	|---changlog
	|---conffiles
|---etc
|---usr
|---opt
|---tmp
|---boot
	|---initrd-vstools.img

DEBIAN为安装信息及控制包
etc、usr、opt、tmp为文件需要存放的路径(可以把这些文件通过tar打包,然后再到根目录下解包,同样可以把各个文件给送到指定文件夹中去,但无法给每个文件分配权限)
boot 包含文件头等信息,需要特殊软件才能查看

DEBIAN 目录

1、control

control这个文件主要描述软件包的名称(Package),版本(Version),Installed-Size(大小),Maintainer(打包人和联系方式)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。

字段用途例子/其他
Package程序名称中间不能有空格
Version软件版本
Description程序说明
Section软件类别utils, net, mail, text, x11
Priority软件对于系统的重要程度required, standard, optional, extra等;
Essential是否是系统最基本的软件包yes/no,若为yes,则不允许卸载(除非强制性卸载)
Architecture软件所支持的平台架构i386, amd64, m68k, sparc, alpha, powerpc等
Source软件包的源代码名称
Depends软件所依赖的其他软件包和库文件 若依赖多个软件包和库文件,采用逗号隔开
Pre-Depends软件安装前必须安装、配置依赖性的软件包和库文件 常用于必须的预运行脚本需求
Recommends推荐安装的其他软件包和库文件
Suggests建议安装的其他软件包和库文件

例:

Source: rkisp-engine
Section: libs
Priority: extra
Maintainer: Shunqian Zheng <zhengsq@rock-chips.com>
Build-Depends: debhelper (>=9)
Standards-Version: 3.9.6
Homepage: https://github.com/rockchip-linux/camera_engine_rkisp
Package: rkisp-engine
Architecture: arm64
Multi-Arch: foreign
Depends: systemd
Description: 3A libraries match Rockchip rkisp1 driver version 0.1.5.
Version: 2.2.0

2、其他文件

文件名作用
preinst一个脚本文件,用于备份(以便安装失败时回滚)
prerm处理删除前操作的文件脚本
postinst处理安装后的事件的脚本文件,比如创建快捷方式,删除备份文件等操作,按需添加
postrm处理删除后操作的脚本文件,按需添加

dpkg

打包成deb文件我们需要用到命令dpkg
dpkgDebian package的简写,为Debian 操作系统 专门开发的套件管理系统,用于软件的安装,更新和移除。
所有源自**“Debian"的Linux的发行版都使用 dpkg, 例如"Ubuntu”**
语法格式 dpkg [参数]

参数作用示例
-b给package目录打包dpkg -b package package.deb(第一个参数为将要打包的目录名)
-R安装一个目录下所有的软件包dpkg -R /usr/local/src
-i安装软件包dpkg -i package.deb
-r删除软件包(保留配置)dpkg -r package.deb
-l显示已安装软件包列表dpkg -l
-L显示于软件包关联的文件dpkg -L package.deb
-c显示软件包内文件列表dpkg -c package.deb
-P移除软件(不保留配置)dpkg -P package.deb
-x解压deb中所要安装的文件dpkg -x package.deb folder
-e解压deb包中DEBIAN目录下的文件dpkg -e package.deb folder
-A从软件包里面读取软件的信息dpkg -A package.deb

例程

我们可以使用最小的deb包来测试一下。

1、创建文件

(1)建立一个目录名称,如packagetest

mkdir packagetest 

(2)进入packagetest,依次创建DEBIAN、usr目录。进入usr目录在创建bin目录。

mkdir DEBIAN usr && cd usr && mkdir bin

DEBIAN目录用与存放配置信息control文件,bin目录用于存放可执行文件。
(3)进入DEBIAN,创建control文件,编辑配置信息。

cd DEBIAN && vim control

2、control文件(编写完成后,要空出来最后一行,否则可能找不到)

Package: packagetest     #名称
Version: 1.0.0           #版本 
Architecture: amd64      #架构
Maintainer: WonderThink  #打包人
Secion: utils            #软件类别
Priority: optional       #对移动的重要程度
Installed_Size: 20       #大小
Description: This is my second deb package #描述

3、编写可执行文件

使用Shell的写一个最简单的helloworld.sh,先进入usr/bin并创建helloworld.sh

cd usr/bin && vim helloworld.sh

helloworld.sh内容

#!/bin/bash
 
echo "hello,world!"

helloworld.sh文件添加可执行权限

chmod +x helloworld.sh

4、打包deb文件

(1)打包

dpkg -b packagetest

image-20230305223346974

(2)命名

命名命令可以用版本号和平台给deb包命名。

dpkg-name packagetest.deb

image-20230305223613936

(3)安装

sudo dpkg -i packagetest_1.0.0_amd64.deb

image-20230305224214318
安装完成之后,可以在任意目录直接运行helloworld.sh就可以打印出hello,world!了。
image-20230305224410662

(4)卸载

sudo dpkg -r packagetest

image-20230305224638153

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘭噗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值