Debian deb文件打包及例程

article/2025/9/15 3:32:05

简介

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/bashecho "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


http://chatgpt.dhexx.cn/article/eMw4qU4E.shtml

相关文章

linux .deb文件的解压与制作.deb包的压缩命令

.deb文件是一种Debian Linux Package 文件&#xff0c;属于压缩文件。我们可以自己制作.deb包然后执行dpkg -i softname.deb实现一键安装软件。 制作deb包 dpkg-deb -b software software.deb softname是你自己写的软件包&#xff0c;如何制作.deb文件可以网上搜索方法&#x…

.deb文件的解压与压缩

.deb文件是一种Debian Linux Package 文件&#xff0c;属于压缩文件。 包含 .deb 文件扩展名的文件是 Unix 存档文件。 这些文件最常用于安装包&#xff0c;其中包含为使用 Debian 包管理应用程序在 Linux 操作系统上运行的计算机开发的软件。 一、.deb文件解压 解压.deb文件的…

Linux:解决ubuntu上网络不可达,网络不可用。

别信那些乱七八糟的&#xff0c;简单粗暴一点&#xff0c;亲测有效。 直接新建一个网络&#xff0c;就是那个上下图标那个&#xff0c;类似我们手机使用的数据启动图标一样。创建的时候默认就行&#xff0c;不要过多的设置Ipv4f方式、DNS、路由自动就行&#xff0c;不用输入什么…

pip显示网络不可达错误解决

解决安装python包网络不可达问题 如图&#xff0c; 升级pip3报网络不可达的错&#xff0c;安装某些python包也失败&#xff0c;原始的pip3是从国外拿资源&#xff0c;速度慢&#xff0c;资源少&#xff0c;这里我们可以用华科大的镜像&#xff0c;操作如下&#xff1a; sudo p…

安装Python包,网络不可达解决方法

最近不知道什么鬼&#xff0c;可能是19的原因&#xff0c;外网都屏蔽掉了&#xff0c;安装个Python包都报网络不可达。 找了很多方法都行不通&#xff0c;后来终于找到一个方法&#xff0c;把安装镜像换到国内来就行了。 sudo pip3 install cython -i https://pypi.mirrors.u…

centos7 网络不可达

昨天安装完centos7&#xff0c;使用xshell6网络可以联通&#xff0c;今天发现网络不可达&#xff0c;以太网卡没有ip地址&#xff0c; 网上搜了下&#xff0c;废话比较多&#xff0c;自己总结了下 解决办法: 1、打开虚拟网络编辑器&#xff0c;查看网关地址 2、输入 vi /etc…

linux网络不可达

解决办法修改网卡名称即可 vim /etc/sysconfig/grub 然后&#xff0c;往这个文件中添加“net.ifnames0 biosdevname0”内容&#xff0c;如下图所示&#xff1a; 紧接着&#xff0c;执行如下命令&#xff1a; grub2-mkconfig -o /boot/grub2/grub.cfg 效果如下&#xff1a; …

Ubuntu安装软件包网络不可达问题

Ubuntu安装软件包网络不可达 1. sudo vi /etc/resolvconf/resolv.conf.d/head 编辑文件插入: nameserver 119.29.29.29 nameserver 114.114.114.114 nameserver 180.76.76.76 nameserver 1.2.4.8 2. Esc: wq保存退出 ***3.***使其生效执行:sudo resolvconf -u ***4.***执行…

Linux下网络不可达

环境&#xff1a;VMware虚拟机 系统&#xff1a;centos7 在使用yum install gcc 安装gcc的时候&#xff0c;一直安装不成功。ping 127.0.0.1是可以接通的&#xff0c;但是ping 114.114.114.114一直显示connect&#xff1a;网络不可达。 解决方法&#xff1a; 切换成root登录…

Linux提示网络不可达

Linux提示网络不可达 1.查看网卡中&#xff0c;检查ip 网关 子网掩码 dns 等配置是否配齐(静态ip) vim /etc/sysconfig/network-scripts/ifcfg-ens332.检查无误后&#xff0c;可以在检查网关是否真的有设置成功 查看网卡&#xff1a; nmcli connection show2.查看网关 ser…

ping connect:网络不可达 /未知的服名称或服务

linux 突然上不了网,然后各种百度,多尝试,终于解决了, 修改文件如下图,vi /etc/sysconfig/network-scripts/ifcfg-ensxx

linux中ping命令网络不可达或ping www.baidu.com未知的名称与服务

linux提示网络不可达/未知的名称与服务 1.查看静态ip配置是否完成 检查静态ip地址、网关、子网掩码 、域名解析地址是否配置完成&#xff0c;是否设为静态 vi /etc/sysconfig/network-scripts/ifcfg-ens33 重启网络: systemctl restart network 2.检查网关是否配置成功 1.…

解决Ubuntu初次安装下载较慢或网络不可达问题

当我们刚安装好Ubuntu系统后&#xff0c;在终端下载东西时&#xff0c;可能出现下载网速慢&#xff0c;或者出现以下问题&#xff0c; WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) 网络不可达&#xff1a; 因为初次安装后&#xff…

linux connect: 网络不可达、没有ip解决方法

查看网卡 [rootlocalhost ruyi]# ifconfig切换root用户&#xff08;避免权限不足 使用不了命令&#xff09; su root 编辑文件 /etc/sysconfig/network-scripts/ifcfg-xxx xxx是图片以太网的名称 我的就是ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改保存ONBO…

Linux connect 网络不可达

1、记录两种情况&#xff1a;“CentOS6 connect 网络不可达” 和 “CentOS6 ping网址 未知的名称或服务” 1.1 CentOS6 connect 网络不可达 1.1.1 root 登录&#xff0c;进入“vim /etc/sysconfig/grub”修改网卡名称&#xff0c;在quiet后加入 “net.ifnames0 biosdevname…

Centos7 ping网络不可达

问题描述&#xff1a; 1.ping 之后显示网络不可达 2.打出ifconfig命令看不到ip地址 3.网络中显示网线已经被拔出 4.SecureCRT无法连接虚拟机 原因分析&#xff1a; vm相关的网络服务没有启动 解决方案&#xff1a; 将相关的五个服务都打开即可

Linux网络不可达解决方法

1.如果是新装的虚拟机&#xff0c;建议点击虚拟机左上角的编辑&#xff0c;打开虚拟网卡&#xff0c;点击左下角还原默认设置 2 进入root账号 输入 vim /etc/sysconfig/grub&#xff0c;在GRUB_CMDLINE_LINUX。。。。的 哪行最后面按i编辑&#xff0c;添加net.ifnames0 bios…

wget失败,网络不可达

[ljlocalhost ~]$ wget http://nodejs.org/dist/v6.10.1/node-v6.10.1-linux-x64.tar.xz --2022-06-03 03:31:09-- http://nodejs.org/dist/v6.10.1/node-v6.10.1-linux-x64.tar.xz 正在解析主机 nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::681…

CentOS7出现网络不可达情况

有可能是配置完静态ip后未配置网关和子网掩码导致的 终端输入以下命令&#xff1a; vi /etc/sysconfig/network-scripts/ifcfg-ens33 网关在虚拟机的网络编辑里查看&#xff1a;

VMware虚拟机解决网络不可达

1.首先vi /etc/sysconfig/network-scripts/ifcfg-ens33检查ONBOOTyes&#xff0c;保存 2.记得输入systemctl restart network命令重启网关&#xff01;&#xff01;&#xff01;&#xff08;血泪教训&#xff09; 吾独矣 终极愿望世界和平