news 2026/9/2 21:31:15

第八期:构建deb软件安装包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第八期:构建deb软件安装包

大家好,接下来的一段时间我将开始学习野火的Linux系统课程并将学习到的干货逐步更新到我的CSDN博客中。没时间刷课的同学可以把我的博客喂给AI 突击一下。

目录

1、Linux软件包

1.两大类软件包

源码包(.tar.gz 压缩源码)

二进制包(deb、rpm)

2.deb 软件包目录规范(FHS 标准)

2、deb包与dpkg工具

3、构建一个helloworld的deb包

4、apt工具

apt 包管理器

常用 apt 命令

dpkg vs apt

1、Linux软件包

1.两大类软件包

源码包(.tar.gz压缩源码)

优点

  • 开源免费,可以看到源代码
  • 可以自由裁剪功能,编译时开启 / 关闭模块
  • 可以修改源代码,二次开发

缺点

  • 安装步骤繁琐:./configuremakemake install
  • 需要本地编译,编译耗时久
  • 依赖库多,编译报错新手很难排查解决

本质:拿到 C/C++ 源码,自己在本机编译生成可执行程序

二进制包(deb、rpm)

已经在别的机器编译完成,直接拿来安装,不需要本机编译。

优点

  • 安装简单,一条命令即可
  • 安装速度快,不用编译

缺点

  • 看不到源代码,不能修改源码
  • 编译时已经固定功能,无法自由裁剪模块
  • 依赖问题需要包管理器处理

2.deb 软件包目录规范(FHS 标准)

文件类型保存目录说明
普通程序/usr/bin普通用户可执行的二进制程序,所有用户都能调用
root 权限程序/usr/sbin仅 root / 管理员使用的工具程序,普通用户一般不执行
程序配置文件/etc系统级配置,全局配置文件;软件安装后,修改这里会影响全部用户
日志文件/var/log运行产生的日志,可变数据,会不断增长
文档文件/usr/share/doc软件说明文档、README、版权信息等

补充:

  1. /usr是只读的系统目录:存放软件本体,安装时写入,运行时不会修改。
  2. /var是可变目录:日志、缓存、运行数据,程序运行过程会持续读写修改。
  3. /etc配置:区分全局与用户配置
    • /etc/xxx.conf全局配置,所有用户生效;
    • ~/.xxxrc:用户私有配置,只对当前用户生效。
  4. 区分/bin/usr/bin
    • /bin:系统启动必备命令(单用户模式也要用)
    • /usr/bin:普通应用软件,deb 包的程序一般放这里。

2、deb包与dpkg工具

  • 两种二进制包
包格式适用发行版包管理器
debDebian、Ubuntu、Deepindpkg/apt
rpmRedHat、CentOS、Fedorarpm/yum/dnf

注意:deb 和 rpm不能互相通用,Ubuntu 不能直接装 rpm 包,因此我们主要用deb。

  • dpkg(deb 底层工具)

dpkg:本地包管理工具,只处理本地已经下载好的 deb 文件,不会自动解决依赖。 apt 是上层工具,会联网自动处理依赖,底层依然调用 dpkg。

  • dpkg 常用命令
命令作用
dpkg -i xxx.deb安装 deb 包(本地文件)
dpkg -L 软件名查看该软件安装到系统哪些目录(文件列表)
dpkg -l 软件名查看软件版本、安装状态
dpkg -s 软件名查看软件详细信息(版本、状态、依赖)
dpkg -c xxx.deb查看deb 包内部包含哪些文件(还没安装,只是下载了deb包)
dpkg -r 软件名卸载软件(保留配置文件)
dpkg -P 软件名彻底卸载,删除配置文件
  • 总结
  1. deb 包用于 Ubuntu/Debian 系;rpm 用于 CentOS/RHEL 系。
  2. dpkg是底层工具,处理本地 deb,不解决依赖;apt 负责联网 + 依赖。
  3. -L看已安装文件;-c看 deb 包内部文件。
  4. -r卸载保留配置;-P彻底卸载。

3、构建一个helloworld的deb包

4、apt工具

apt 包管理器

旧版:apt‑getapt‑cache命令分散;apt 是新版整合工具,底层调用 dpkg。

  • 优点:自带进度条、显示升级包数量,交互友好
  • 重要:apt 可以联网自动解决依赖;dpkg 不行

常用 apt 命令

apt install 软件名 #联网安装,自动解决依赖 apt remove 软件名 #卸载,保留配置文件 apt purge 软件名 #彻底卸载,删除配置 apt show 软件名 #查看软件信息

dpkg vs apt

工具特点依赖处理
dpkg底层工具,操作本地 deb 包不自动处理依赖
apt上层管理工具,联网自动处理依赖
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:30:48

Trybe全栈Web开发课程首模块实践项目合集

巴西有个知名编程教育平台叫Trybe, 全称de e Inovao Trybe, “-”是其设计给初学者的全栈Web开发课程里, 第一个学习模块产出的实践性项目集合, 这个项目集合有鲜明的启蒙性、结构化与工程化特征。该标题直译为“初始项目”, 然而它的内涵远超字面意义, 它标志学习的人从零基础…

作者头像 李华
网站建设 2026/9/2 21:19:45

SpringBoot项目改造注意事项(旧项目框架复用)

第一章、 项目改造准备工作 1.1 保留:日志,切面、Util、配置等 将旧项目 rpm 改名为新项目 itm,对整个项目的构建配置、包结构、资源文件进行系统性调整。 保留:日志配置(Logback/Log4j2)、切面类&#xff…

作者头像 李华
网站建设 2026/9/2 21:19:32

【AI大模型进阶】缓存机制设计:相同的问题别问大模型两遍,省钱!

【AI大模型进阶】缓存机制设计:相同的问题别问大模型两遍,省钱! 这是【AI大模型进阶】系列第一百一十二课,聚焦AI应用成本优化与性能提速核心方案,针对大模型重复提问、无效API调用、Token资源浪费、响应延迟过高的行业痛点,从零搭建适配AI对话场景的缓存体系。 通过上…

作者头像 李华
网站建设 2026/9/2 21:13:49

Flutter踩坑 · 转场动画卡顿优化:智能延迟 + 遮罩方案

问题 Flutter 跳转二级页面时,转场动画(~460ms)与 API 请求的同步处理(JSON 解析 setState Widget build)共用 UI 线程。请求响应回来后,同步处理抢占 UI 线程,导致动画丢帧、卡顿。 根因:Dart 是单线程,动画渲染、网络数据处理、Widget build 全在同一条线程上排队。每帧只有…

作者头像 李华
网站建设 2026/9/2 21:09:29

LangGraph 完整核心概念 + 运行流程

LangGraph 完整核心概念概述 LangGraph 是面向 Agent 的状态图编排框架,底层基于 Google Pregel BSP(批量同步并行)模型,支持循环、分支、多 Agent、断点续跑;和普通 DAG(Directed Acyclic Graph&#xff…

作者头像 李华
网站建设 2026/9/2 21:04:08

智能送药小车实战:STM32+树莓派双核架构与二维码识别方案详解

简介:本资源为2021年全国大学生电子设计竞赛F题‘智能送药小车’的完整参赛方案实现包,面向嵌入式系统开发初学者、电赛备赛学生及智能控制方向实践者,聚焦多传感器融合、视觉识别与运动控制等典型工程问题。压缩包共298个文件,含…

作者头像 李华