【HD-RK3576-PI】Linux制作deb包的方法

发布于:2025-04-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

1.什么是deb包 ?

        DEB包是Debian及其衍生Linux发行版(如Ubuntu、Linux Mint等)使用的软件包格式。DEB包主要用于简化软件的安装、更新和卸载过程。它实际上是一个归档文件,通常包含了两个主要部分:

  1. 数据压缩包:包含软件实际的可执行文件、库文件、文档、图标等。
  2. 控制信息:包含软件包的元数据,例如软件包名称、版本号、依赖关系、维护者信息以及安装和卸载脚本等。

        可以使用命令dpkg -l来查看系统以及安装了那些deb包

2.制作deb包

        安装工具与依赖库

sudo apt-get install build-essential debhelper \
    make autoconf automake dpkg-dev fakeroot pbuilder gnupg

        创建以下目录结构

        在test_deb目录下创建DEBIAN及opt/test_deb目录,DEBIAN目录下包含控制信息文件, 而在opt/test_deb目录下创建hello_deb.sh文件则表示我们需要将test_deb.sh文件安装到 linux系统的opt/test_deb目录下。

        然后分别给予postinst、postrm、test_deb.sh文件可执行权限,postinst和postrm的权限必须>=0555且<=0775。

test_deb/DEBIAN/control

Package: test-deb
Version: 1.0.0
Section: free
Priority: optional
Essential: no
Architecture: arm64
Maintainer: embedfire <embedfire@embedfire.com>
Provides: test_deb
Description: deb test

        注意:control文件的末尾需添加一个空行,否则会报错“缺失结尾的换行符”

test_deb/DEBIAN/postinst

#! /bin/bash

if [ "$1" = "upgrade" ] || [ "$1" = "install" ];then
    echo "test_deb installing"
fi

        当安装了该deb包以后,系统会默认执行postinst脚本, 通常我们利用该脚本来搭建一些为软件执行的环境(如创建目录、修改权限等), 值得注意的是该文件需具有可执行权限。

test_deb/opt/test_deb/test_deb.sh

#! /bin/bash

echo test deb ok!

        脚本仅仅是打印信息,用户可自行设置需要执行的程序。

        执行下面命令构建软件包

sudo dpkg-deb -b ../test_deb ../test_deb_1.0.0_arm64.deb

        其中dpkg-deb是构建deb包命令,-b参数表示要构建一个deb包, ../hello_deb参数表示要构建deb包原材料的路径, ../test_deb_1.0.0_arm64.deb参数表示将该deb包构建在当前目录的上级目录中, 一般我们构建deb包的名字都会遵循这么一个原则, 其命名方式为:软件名称+软件版本号+该软件所支持的处理器架构, 如软件名为test_deb,版本号为1.0.0,所支持的处理器架构为arm64。

        制作好之后可以查看是否制作成功

        查看deb信息

根据已有的deb包修改内容

        首先安装工具和依赖库

sudo apt-get install build-essential debhelper make autoconf automake dpkg-dev fakeroot pbuilder gnupg

        新建一个update_deb目录,使用 dpkg -X 命令将deb包解压到update_deb目录中。

       进入update_deb目录下可看到并没DEBIAN相关目录,在update_deb目录下使用 dpkg -e 解压出控制文件相关信息。

       此时即可对deb包进行修改,比如在test_deb.sh里添加一句打印消息

       修改DEBIAN/control下的版本信息为1.0.1

     以重新打包应用程序并安装了。


网站公告

今日签到

点亮在社区的每一天
去签到