DevOps系列文章 : 使用dpkg命令打deb包

deb软件包构建 deb软件包构建8. deb 软件包构建8.1 Linux 软件包8.2 deb 包与 dpkg 工具deb 包rpm 包dpkg 工具deb包文件结构分析构建 deb 包的方法8.3 apt 命令 和 apt-get 命令小实验:创建 build_deb.sh 8. deb 软件包构建 8.1 Linux 软件包 Debian 派系 Redhat 派系 源码包 二进制包后缀 deb rpm 底层工具 dpkg rpm 用户工具 apt yum 文件类型 保存 阅读详情

创建一个打包的目录,类似rpmbuild,这里创建了目录deb_build

mkdir  deb_build

目标

我有一个hello的二进制文件hello和源码hello.c, 准备安装到/opt/helloworld目录中

步骤

  1. 在deb_build目录创建一个文件夹用于存放我的安装文件
mkdir helloworld
  1. 在helloworld文件里创建DEBIAN文件夹和opt文件夹
  2. 在DEBIAN文件夹创建一个文件control
  3. 在opt文件夹新建一个helloworld文件夹,存放上hello和hello.c,如下
$ tree helloworld/
helloworld/
├── DEBIAN
│   └── control
└── opt
    └── helloworld
        ├── hello
        └── hello.c
 
3 directories, 3 files

control文件类似rpm的spec文件,包含deb的包信息

只要把想安装的文件写到对应目录就可以安装到对应的系统目录

这里描述一个最简易的control文件

Package: helloworld
Description: my deb test
Maintainer: username <user@mail.com>
Version: 0.1
Architecture: all
  1. 回到deb_build目录,执行dpkg -b helloworld即可在当前目录生成deb包
$ dpkg -b helloworld
dpkg-deb: building package 'hello' in 'helloworld.deb'.

也可以指定dpkg -b hellorld hellorld-0.1-all.deb

$ dpkg -b helloworld helloworld-0.1-all.deb
dpkg-deb: building package 'helloworld' in 'helloworld-0.1-all.deb'.
  1. 观看deb包的信息
查看包的字段信息:
$ dpkg -f helloworld-0.1-all.deb 
Package: helloworld
Description: my deb test
Maintainer: WangLin <email@163.com>
Version: 0.1
Architecture: all
查看deb包的详细信息:
$ dpkg -I helloworld-0.1-all.deb 
 new Debian package, version 2.0.
 size 2804 bytes: control archive=296 bytes.
     112 bytes,     5 lines      control              
 Package: helloworld
 Description: my deb test
 Maintainer: WangLin <email@163.com>
 Version: 0.1
 Architecture: all
查看deb包中的文件列表:
$ dpkg -c helloworld-0.1-all.deb
drwxrwxr-x wanglin/wanglin   0 2023-01-11 07:51 ./
drwxrwxr-x wanglin/wanglin   0 2023-01-11 07:54 ./opt/
drwxrwxr-x wanglin/wanglin   0 2023-01-11 07:54 ./opt/helloworld/
-rwxrwxr-x wanglin/wanglin 8304 2023-01-11 07:53 ./opt/helloworld/hello
-rw-rw-r-- wanglin/wanglin  100 2023-01-11 07:53 ./opt/helloworld/hello.c
  1. 安装打好的deb包
$ sudo dpkg -i helloworld-0.1-all.deb 
Selecting previously unselected package helloworld.
(Reading database ... 208913 files and directories currently installed.)
Preparing to unpack helloworld-0.1-all.deb ...
Unpacking helloworld (0.1) ...
Setting up helloworld (0.1) ...

此时/opt/helloworld/hello和hello.c 就安装在/opt/helloworld目录下了

检测安装效果

  • 查看包安装
$ dpkg -l helloworld
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-===================================================
ii  helloworld              0.1              all              my deb test
  • 检测/opt/helloworld目录
$ ls /opt/helloworld/
hello  hello.c

$ sudo /opt/helloworld/hello
hello world
  • 查看包的安装信息
$ dpkg -s helloworld
Package: helloworld
Status: install ok installed
Maintainer: WangLin <email@163.com>
Architecture: all
Version: 0.1
Description: my deb test
  • 查看/var/lib/dpkg/status中的记录
$ cat /var/lib/dpkg/status|grep helloworld -A 5
Package: helloworld
Status: install ok installed
Maintainer: WangLin <email@163.com>
Architecture: all
Version: 0.1
Description: my deb test
  • 查看deb包安装了哪些文件
$ dpkg -L helloworld
/.
/opt
/opt/helloworld
/opt/helloworld/hello
/opt/helloworld/hello.c

在这里插入图片描述

Linux系统离线安装deb包:APT本地仓库构建与实战指南 在Linux系统管理与运维中,软件包管理是基础且核心的技术环节。APT(Advanced Package Tool)作为Debian/Ubuntu系统的包管理工具,其在线安装机制通过远程仓库自动解析并获取依赖包,极大地简化了软件部署。然而,在生产环境、内网隔离或网络受限的场景下,这种网络依赖成为部署的瓶颈。此时,构建本地APT仓库的技术价值凸显,它通过在可控环境中模拟官方仓库的结构与功能,实现软件的离线分发与依赖管理,确保了系统部署的确定性与安全性。这项技术广泛应用于数据中心运维、嵌入式开发、安全隔离网络及 阅读详情

相关推荐

Deb包本质:Ubuntu软件契约与五维生命周期管理

Deb包是Ubuntu及Debian系发行版中承载软件依赖、配置、服务集成与安全升级的结构化契约单元,其核心在于APT驱动的元数据驱动型包管理机制。它通过control文件声明强约束依赖、conffiles实现配置变更智能决策、triggers支持跨包协同、postinst脚本深度集成systemd服务生命周期,并依托/var/lib/dpkg/status构建可审计的系统状态图谱。相比Docker镜像的进程隔离抽象,deb包解决的是操作系统级软件交付的原子性、可重现性与合规性问题,广泛应用于金融、政企等需

weixin_30516429的博客 269

如何使用 dpkg 命令生成 Debian 软件包?

使用 dpkg 命令生成 Debian 软件包十分简单,只需要将软件包源代码或二进制文件放置在正确的目录中,然后使用 dpkg 命令即可生成目标软件包文件。生成的软件包可以上传到公共或内部仓库中,让更多人使用你的软件。同时,还需注意保护软件包中的敏感信息和关键代码,避免泄露和滥用。

honeyroyal的博客 1680

dpkg深度解析:Debian系包管理的底层原理与实战指南

dpkg 是 Debian 及其衍生发行版(如 Ubuntu、Kali、Deepin)的核心二进制包管理工具,它不解决依赖、不联网下载,而是专注在文件系统与数据库间精确注册、配置和追踪 .deb 包的状态。其本质是面向系统维护者的‘包状态引擎’,而非用户友好的安装器——这解释了为何直接使用 dpkg -i 常见依赖错误或锁冲突。理解 dpkg 的设计哲学,是掌握 apt 协同机制、离线部署、包构建(dpkg-deb)、状态修复(--configure -a)及安全审计(-S、--verify)的前提。本文围

weixin_30920513的博客 397

使用dpkg-deb打包linux安装包

使用dpkg-deb生成常见linux系统deb安装包,本文以uos为例,描述制作过程。提示:以下是本篇文章正文内容,下面案例可供参考。

qq_43593022的博客 2610

解决Ubuntu 20.04离线安装难题:如何高效管理deb包和依赖关系

本文针对Ubuntu 20.04离线安装的挑战,提供了从基础到进阶的完整解决方案。详细介绍了如何通过apt download、dpkg等工具高效管理deb包及其依赖关系,并重点讲解了构建本地APT仓库的核心方法,包括使用dpkg-scanpackages创建简易仓库和apt-mirror完整镜像官方源,以实现离线环境下稳定、自动化的软件部署。

weixin_29210727的博客 289

Debian/Ubuntu系统下快速获取源码并构建deb包的两种实用方法(附常见问题解决)

本文详细介绍了在Debian/Ubuntu系统下快速获取源码并构建deb包的两种核心方法:使用apt source从系统源获取,以及使用dget从指定URL获取。文章深入讲解了构建环境配置、依赖管理、编译打包全流程,并针对构建依赖失败、编译错误等常见问题提供了实用的解决方案,帮助用户高效完成软件包的定制与构建。

weixin_29212429的博客 359

dpkg打包笔记

dpkg

weixin_48134886的博客 711

Ubuntu 20.04 安装 Webmin:DEB 直装实战指南

Webmin 是一款面向 Linux 服务器的轻量级 Web 系统管理工具,基于 Perl 构建,不依赖 Python 或 Node.js 运行时,具备零外部依赖、自包含 Web 服务、可视化配置与操作审计等核心特性。其技术价值在于将 iptables、Apache/Nginx 虚拟主机、用户权限、cron 任务等命令行高危操作封装为带校验、回滚和日志的图形化表单,显著降低运维误操作风险。典型应用场景包括老旧 VPS 快速应急响应、多版本 Ubuntu 环境统一纳管、非专业人员安全接管服务器配置。本文聚焦

weixin_30892889的博客 396

【Linux】一步一步学Linux——dpkg-deb命令(270)

00. 目录 文章目录00. 目录01. 命令概述02. 命令格式03. 常用选项04. 参考示例05. 附录 01. 命令概述 dpkg-deb命令是Debian linux下的软件包管理工具,它可以对软件包执行打包和解包操作以及提供软件包信息。 可以通过dpkg命令调用dpkg-deb命令的功能,dpkg命令的任何选项将被传递给dpkg-deb命令去执行。 02. 命令格式 用法:dpkg-d...

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 3352

DEB包自动化构建实战:从手动打包到Shell脚本一键生成

本文详细介绍了DEB包从手动打包到Shell脚本自动化构建的全过程,涵盖基础结构解析、dpkg工具使用、自动化脚本设计及高级技巧。通过实战案例展示如何利用Shell脚本实现一键生成DEB包,显著提升打包效率和一致性,适用于Linux软件开发和DevOps流程。

weixin_42525385的博客 160

RPM与DEB打包实战:从spec文件到软件仓库的全流程指南

Linux软件分发中,RPM与DEB是两大主流软件包格式。理解其底层原理——文件层、脚本层、元数据层的封装逻辑,是掌握高效打包的关键。RPM通过spec文件声明依赖,DEB依靠control文件管理包关系,二者虽语法不同,但均实现了依赖解析、升级与卸载的标准化。对开发者而言,掌握rpmbuild与dpkg-buildpackage工具链,可将编译产物快速转化为可交付的安装包,满足内网私有仓库、企业级软件分发等场景需求。从本机打包到搭建本地yum/apt源,再到CI集成,规范的打包流程能显著降低运维成本。本文

weixin_30225755的博客 274

Ubuntu 22.04 安装 VS Code 正确姿势:deb 包、APT 源与 Snap 对比

VS Code 是 Linux 开发者最常用代码编辑器,其在 Ubuntu 系统上的安装本质是包管理机制与运行时依赖的协同问题。理解 deb 包结构、APT 仓库签名验证及 snap 沙箱隔离原理,是保障编辑器可启动、可更新、可集成的关键。Ubuntu 22.04 因 APT 依赖解析更严格、密钥管理升级(如 --dearmor 强制要求)和架构标识(arch=amd64)校验增强,使传统双击安装极易失败。技术价值在于建立标准化、可审计、可持续更新的开发节点;典型应用场景包括团队统一环境部署、CI/CD 流

weixin_28826521的博客 278

Linux软件包打包实战:DEB与RPM从零构建指南

Linux软件包管理是发行版兼容性的核心基础,DEB和RPM作为两大主流二进制包格式,分别承载Debian/Ubuntu系与RHEL/CentOS/Fedora系的安装契约。其本质并非简单归档,而是通过control文件、spec元数据、maintainer脚本等结构化声明,实现文件部署、依赖校验、权限控制与生命周期管理。技术价值在于统一分发、原子升级与系统级集成——尤其对Java客户端、嵌入JDK的桌面工具等需跨发行版交付的场景至关重要。本文聚焦真实工程痛点,详解dpkg -b与rpmbuild -ba的

weixin_30983353的博客 272

Logstash-forwarder打包与分发:RPM和DEB包制作完整流程

Logstash-forwarder是一款轻量级日志传输工具,专为高效收集和转发日志数据而设计。本文将详细介绍如何为Logstash-forwarder制作RPM和DEB包,帮助开发者和系统管理员轻松实现软件的打包与分发。 ## 📋 准备工作 在开始打包之前,确保你的系统满足以下要求: - 安装Go语言环境(用于编译Logstash-forwarder) - 安装fpm工具(用于创建RPM

gitblog_00854的博客 997

Fluent实战——残差震荡分析与收敛优化策略

本文深入探讨了Fluent仿真中残差震荡的成因与优化策略。残差震荡是流场物理或数值问题的关键信号,文章系统分析了网格质量、边界条件、物理模型非定常性及求解设置四大主因,并提供了库朗数与松弛因子的调参心法,以及针对超音速流、共轭传热等典型场景的实战优化方案,旨在帮助用户有效提升计算收敛性与结果可靠性。

w1x2y3的博客 313

旋转变压器软件解码simulink仿真

旋转变压器软件解码simulink仿真、电机转速位置测量

qq_31446727的博客 2580

Ubuntu/Debian系统下制作Tomcat的deb包:从解压到安装的全流程指南

本文详细介绍了在Ubuntu/Debian系统下将Tomcat打包成deb安装包的全流程指南。从环境准备、目录结构设计到控制文件编写和构建验证,逐步指导开发者完成deb包制作,并涵盖系统服务集成、多架构支持等高级配置,帮助简化Tomcat部署流程。

rgv234567的博客 122

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。

m0_71627844的博客 2125

别再手动敲命令了!用这个Shell脚本5分钟搞定DEB包自动化打包(附源码)

本文介绍了一个高效的Shell脚本解决方案,用于自动化DEB包打包流程,显著提升交付效率。通过模块化设计、智能错误处理和多文件部署支持,该脚本能将手动打包时间从15分钟缩短至5分钟,适用于独立开发者和DevOps团队。

weixin_30482383的博客 776

YOLOv8环境搭建+训练自己的数据详细项目

直接按照路径会有问题,找到自己 requirements.txt 文件路径,我这里是pip install -r D:\ultralytics-main\ultralytics-main\requirements.txt。首先去自己的anaconda的安装的envs(虚拟环境),在导航栏输入cmd,进入命令窗口。到官方网站下载yolo模型 ,下载好后解压,里面有个文件requirements.txt。然后安装ultralytics ,这是必须的。

m0_63172128的博客 2万+

自动驾驶领域自动化数据标注应用

自动驾驶领域自动化数据标注应用 1. 背景介绍 1.1 自动驾驶技术的发展 自动驾驶技术近年来取得了长足的进步,吸引了众多科技公司和传统车企的投入。自动驾驶系统需要感知周围环境、做出决策并控制车辆,是一个极具挑战的任务。其中,环境感知是自

AI天才研究院 2214

Woodpecker 发行包安装指南:DEB/RPM 包、systemd 服务与 NixOS 声明式部署

Woodpecker CI/CD 引擎除了容器镜像和二进制压缩包之外,还以 **DEB/RPM 发行包**的形式为 Debian/Ubuntu 与 CentOS/RHEL 系发行版提供开箱即用的安装方式,安装后会同时生成 systemd 服务与示例环境文件。本文以官方发行包为核心,完整讲解包的安装命令、环境文件配置、systemd 单元细节,并顺带梳理 Alpine、Arch、NixOS 等社区维

gitblog_01009的博客 891

10倍开发者的 Dify 魔法书:从零构建全栈 AI 应用

“不懂底层算法,也能开发爆款 AI 应用吗?” 答案是:绝对可以。 Dify 正在重新定义 AI 应用的开发范式——通过可视化的低代码平台,将原本需要数周的开发周期压缩到几小时。无论你是前端、后端、产品经理,还是渴望破局的独立开发者,这都是你不可错过的红利。 我们将手把手教你利用 Dify 快速接入百模大战,零代码搭建企业级知识库,并一键发布你的专属 AI 助手、智能客服和自动化工作流。 告别重复造轮子,掌握 Dify,一个人就是一支 AI 团队。现在上车,开启你的 10 倍速开发之旅!

davidwang456的专栏 680

别再只用apt install了!手把手教你用wget+dpkg在Ubuntu 22.04上精准安装Zabbix Agent 5.0.2

本文详细介绍了在Ubuntu 22.04上使用wget+dpkg手动安装Zabbix Agent 5.0.2的工程化实践,帮助用户精准控制软件版本,避免自动更新带来的风险。通过解析官方仓库结构、处理依赖关系、配置系统级设置和服务管理,实现稳定可靠的部署方案,特别适合生产环境对版本控制有严苛要求的场景。

weixin_30642561的博客 429

2026华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2025华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

算法大师! 5万+

SOME/IP协议详解「总目录」

SOME/IP系列文章总目录

雪云飞星的博客 2万+
上一篇: 大数据系列教程之 Kafka基础
下一篇: 产品设计 之 创建完美产品需求文档的4个核心要点
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Coder_Boy_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值