目录

一、概述

1.分类

2.命名方式

3.一个软件包的组成

1. 软件包的基本定义

2. 一个软件包通常包含的部分

① 程序文件

② 库文件

③ 配置文件

④ 数据文件 / 资源文件

⑤ 文档 / 帮助信息

⑥ 服务脚本 / 单元文件(如果是服务型软件)

⑦ 包的元数据(非常重要)

3. 举个例子(以 Ubuntu 的 nginx 包为例)

4. 小总结

二、apt选包流程

2. 多个仓库都有同一个包时,如何选择?

(1) 包的版本号(Version)

(2) 软件源的优先级(Pin-Priority)

(3) 已安装包的来源

三、常用指令

📌 APT 常用指令(Ubuntu 20.04 适用)

1. 更新软件包索引

2. 升级系统

3. 搜索/查询

4. 安装/卸载

5. 清理

6. 修复相关


一、概述

1.分类

ubuntu系统中,安装软件包可以是源码安装,dpkg安装,apt安装。源码安装一般有个配置文件,设置安装路径啥的,dpkg包就是直接对.deb包进行解压安装,apt包底层和dpkg一样。但是它有包管理系统,可以自动处理依赖和管理包,所以他还需要软件仓库。

2.命名方式

3.一个软件包的组成

1. 软件包的基本定义

在 Linux 中,一个 软件包(package) 就是把某个软件运行所需要的 文件 + 元数据 打包成一个统一的格式(比如 .deb.rpm)。
这样包管理器(aptdnfpacman 等)就能自动安装、卸载、升级,并处理依赖关系。

2. 一个软件包通常包含的部分
① 程序文件
  • 可执行文件(bin 文件),真正的应用逻辑。
    例:/usr/bin/vim/usr/sbin/sshd

② 库文件
  • 软件依赖的共享库或静态库。
    例:/usr/lib/x86_64-linux-gnu/libsomething.so

③ 配置文件
  • 用来调整软件行为,通常放在 /etc 下。
    例:/etc/ssh/sshd_config

④ 数据文件 / 资源文件
  • 程序运行需要的静态数据,如图标、文档、语言文件。
    例:/usr/share/icons//usr/share/locale/

⑤ 文档 / 帮助信息
  • 软件说明、许可协议、帮助文档。
    例:/usr/share/doc/<包名>/

    • READMELICENSEchangelog.gz

⑥ 服务脚本 / 单元文件(如果是服务型软件)
  • 用来告诉系统如何启动、停止服务。

    • systemd 下是 unit 文件/lib/systemd/system/xxx.service

    • 在 SysV init 下是 /etc/init.d/xxx

⑦ 包的元数据(非常重要)

这些不会装进最终系统目录,但包管理器会读:

  • 包名、版本号

  • 依赖关系(Depends, Recommends, Suggests, Conflicts)

  • 维护者信息、描述

例子(Debian 包用 dpkg-deb -I xxx.deb 可以看到):

 

Package: vim Version: 2:8.1.2269-1ubuntu5 Depends: libc6 (>= 2.29), libgpm2 (>= 1.20.7), ... Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Description: Vi IMproved - enhanced vi editor

3. 举个例子(以 Ubuntu 的 nginx 包为例)

安装 nginx 后,会有:

  • 可执行文件:/usr/sbin/nginx

  • 配置文件:/etc/nginx/nginx.conf

  • 日志目录:/var/log/nginx/

  • 文档:/usr/share/doc/nginx/

  • systemd 服务单元:/lib/systemd/system/nginx.service

  • 依赖声明:要求系统有 libc6openssl

4. 小总结

一个软件包的组成部分大致可以归为 三大类

  1. 软件运行需要的内容:程序文件、库、配置、数据。

  2. 用户/开发者参考信息:文档、帮助、许可证。

  3. 包管理系统需要的内容:依赖关系、版本号、维护者信息、服务脚本。




二、apt选包流程

1.apt软件仓库

  • Ubuntu 的软件包来源配置文件主要在:

    • /etc/apt/sources.list

    • /etc/apt/sources.list.d/*.list

  • 每一行定义一个仓库(Repository),APT 会把它们全部纳入候选源

2. 多个仓库都有同一个包时,如何选择?

APT 有一套 优先级规则(pinning system)来决定用哪个仓库的包。主要考虑因素:

(1) 包的版本号(Version)

  • 默认情况下,APT 会优先选择最高版本号的包。

  • 例如:

    • 仓库 A 有 nginx 1.18.0

    • 仓库 B 有 nginx 1.22.0
      → 默认选择 1.22.0。

(2) 软件源的优先级(Pin-Priority)

  • 配置在 /etc/apt/preferences/etc/apt/preferences.d/*.pref

  • 你可以给某个源设置优先级(Pin-Priority),APT 会参考它来选择。
    常见规则:

    • Pin-Priority > 1000 → 强制使用这个源,即使版本更低也会降级。

    • 990 ~ 1000 → 默认优先使用这个源(如果版本号相同/更高)。

    • 500 → 普通优先级。

    • <100 → 永远不装,只能手动指定。

(3) 已安装包的来源

  • 如果某个包已经安装,APT 通常会默认继续从原来的仓库升级,除非有更高版本或 pinning 规则覆盖。

3.选包流程

[开始: apt install <包名>]|v[APT 检查所有仓库的索引缓存]|+--------+---------+|                  |v                  v
[没有找到]         [找到候选包]报错:              |Unable to locate   vpackage   [有多个仓库?]|+--------+--------+|                 |v                 v[只有一个仓库有包]   [多个仓库都有包]|                 |v                 v[直接选它作为候选]   [比较版本号 -> 选择最高版本]|v[检查 Pin-Priority (优先级规则)]|+----------------+----------------+|                                 |v                                 v[优先级更高的仓库覆盖]         [保持默认最高版本]|                                 |+----------------+----------------+|v[确定候选版本 Candidate]|v[下载并安装该版本的 .deb 包]|v[结束]

每个软件仓库对于某个包都有依赖关系,选择哪一个软件仓库依赖关系肯定也就按照这个仓库的依赖关系处理了。

三、常用指令

📌 APT 常用指令(Ubuntu 20.04 适用)

1. 更新软件包索引

sudo apt update

  • 从配置的所有软件仓库下载最新的 索引信息(软件列表 + 版本号),存放在 /var/lib/apt/lists/

  • 不会升级软件,只是“刷新一下 apt 的数据库”。


2. 升级系统

 

sudo apt upgrade

  • 安装所有“已安装软件”的最新版本。

  • 如果新版本需要安装/删除额外包 → 会跳过

 

sudo apt full-upgrade

  • upgrade 的区别是:允许删除旧包、安装新依赖,以完成升级。

  • 在以前叫 dist-upgrade


3. 搜索/查询

apt search <关键字>

  • 搜索包名和描述。

apt show <包名>

  • 查看软件包详细信息(版本、依赖、维护者、描述)。

apt list --installed

  • 列出已安装的软件包。

apt list --upgradable

  • 列出可以升级的软件包。


4. 安装/卸载

sudo apt install <包名>

  • 安装指定软件包,自动解决依赖。

sudo apt install <包名>=<版本号>

  • 安装指定版本的软件包。

sudo apt remove <包名>

  • 卸载软件,但保留配置文件(/etc 下可能还在)。

sudo apt purge <包名>

  • 卸载软件 并删除配置文件


5. 清理

sudo apt autoremove

  • 自动删除那些“不再被需要的依赖包”。

sudo apt clean

  • 清理 /var/cache/apt/archives/ 下所有 .deb 包缓存。

sudo apt autoclean

  • 清理过时的(本地已无用)缓存包。


6. 修复相关

sudo apt --fix-broken install

  • 修复依赖问题(半安装状态)。

# v 表示显示安装详细信息
dpkg -iv 软件包全名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95296.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95296.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95296.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构青铜到王者第八话---队列(Queue)

目录 一、队列(Queue) 1、概念 2、队列的使用 3、队列模拟实现 4、循环队列 4.1数组下标循环的小技巧&#xff08;1&#xff09;下标最后再往后(offset 小于 array.length): index (index offset) % array.length 4.2如何区分空与满 4.3设计循环队列 二、双端队列 (Deq…

Windows系统之不使用第三方软件查看电脑详细配置信息

MENU使用系统信息工具&#xff08;最详细&#xff09;使用命令行查看命令提示符PowerShell&#xff08;信息更丰富&#xff09;使用DirectX诊断工具&#xff08;查看显卡和声音设备&#xff09;查看设备管理器&#xff08;查看硬件驱动&#xff09;一条命令合集&#xff08;Pow…

K8s学习笔记(一)——

一、k8s是什么一个分布式原来是主要用来管理容器的呀&#xff08;专业点叫“容器编排”&#xff09;&#xff0c;什么是管理&#xff1f;其实就是增删改查等等&#xff0c;简单来理解&#xff0c;k8s就是实现容器增删改查的呗。是开源的&#xff0c;在Linux系统下。就跟创建的s…

Zynq开发实践(FPGA之平台免费IP)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】和c语言平台提供posix api一样&#xff0c;一般fpga厂家也会提供各种各样免费的ip给客户使用。这样&#xff0c;客户就不需要自己去写每一个ip了&am…

nginx 配置文件初识全局块、events、http、server、location 的层级关系

Nginx 配置其实只有两类指令&#xff1a; 放在“某个块”里的块级指令&#xff1b;直接写在顶层的全局指令。 把全部配置想象成一个树形结构&#xff0c;根节点叫 main&#xff0c;往下依次分叉即可。下面用 1 张 ASCII 树 1 张极简示例&#xff0c;30 秒就能看懂层级关系。 层…

OCR大模型最新研究

最新OCR大模型介绍1.GPT-4o 2024.5.14 3.MinerU 2024.7.4 3.GOT-OCR 2024.9.3 4.InternVL3-78B 2025.4.11 开源 通用多模态大模型&#xff0c;OCR是它们的能力之一 因其训练数据的偏向&#xff0c;在文档理解、数学公式识别、图表分析等任务上通常是开源模型中的SOTA&a…

php电子签名

原理使用一对公钥和私钥&#xff0c;用私钥对数据进行签名&#xff0c;用公钥对签名数据进行加密&#xff0c;形成电子签名。电子签名认证&#xff0c;用私钥解密数据&#xff0c;用公钥验证签名。若加密容过长&#xff0c;则将加密内容按照固定长度分块&#xff0c;对每块进行…

鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(三)

目录 一,插入单条数据 二,批量插入数据 三,根据条件删除数据 四,传入对象删除数据 五,删除整张表的数据 六,根据条件更新数据 前面两个章节数据库的创建以及数据库表的创建都已经完成了,下面我们再来看看数据库的增删改查如何构建。 一,插入单条数据 我们先来看一下官…

年度优质会议推荐:【西安石油大学主办|IEEE出版|往届均EI】第七届智能控制、测量与信号处理国际学术会议 (ICMSP 2025)

第七届智能控制、测量与信号处理国际学术会议 (ICMSP 2025) 2025 7th International Conference on Intelligent Control, Measurement and Signal Processing (ICMSP 2025) 2025年11月28-30日 中国北京 主办单位&#xff1a;西安石油大学 会议详情&#xff1a;请点击 亮…

isp 图像处理--DPC坏点矫正

一&#xff0c;Bayer pattern简要介绍我们平时所看到的彩色图像每个像素有三个分量组成&#xff0c;分别为红绿蓝。而目前广泛用到的成像传感器为CMOS传感器&#xff0c;其输出的数据格式为每个像素点只有一个颜色分量&#xff0c;一般称为Bayer Pattern数据&#xff0c;格式如…

Redis常见数据类型及应用场景

好的&#xff0c;我们来详细讲解 Redis 的数据结构及其应用场景。Redis 的强大之处不仅仅在于它支持简单的键值对&#xff0c;更在于它提供了丰富的数据结构&#xff0c;每种结构都针对特定类型的应用场景进行了优化。 核心数据结构与应用场景 Redis 主要支持以下五种核心数据结…

【后端数据库】MySQL 索引生效/失效规则 + 核心原理

SQL 优化的核心 —— 什么时候能“走索引”&#xff0c;什么时候会“失效”。整理一个索引生效/失效规则 核心原理的全景图&#xff0c;帮助彻底理解。&#x1f511; MySQL 索引使用的核心原理MySQL 使用 BTree 索引&#xff08;最常见&#xff09;&#xff0c;特点是&#xf…

基于 YOLOv11n 的无人机航拍小目标检测算法学习

基于 YOLOv11n 的无人机航拍小目标检测算法问题&#xff1a;无人机航拍图像中小目标检测面临尺度变化大导致的检测精度较低和推理速度较慢等 解决&#xff1a;在 C3k2 模块中引入可变形卷积&#xff08;DCN&#xff09;&#xff0c;增强模型在复杂背景下对 多尺度目标的特征提取…

第06章:map():数据变形金刚,想变什么变什么

文章目录map()基础&#xff1a;一对一的数据转换map()的工作原理方法引用让代码更简洁对象转换&#xff1a;实际业务应用用户信息转换示例特殊类型的map()&#xff1a;mapToInt、mapToLong、mapToDouble链式map()&#xff1a;多重转换map()与filter()组合&#xff1a;数据处理管…

197-200CSS3响应式布局,BFC

CSS3响应式布局-媒体查询举例<title>01.媒体查询_媒体类型</title><style>h1 {width: 600px;height: 400px;background-image: linear-gradient(60deg,red,yellow,green);font-size: 40px;color: white;text-shadow: 0 0 20px black;text-align: center;line…

[Android] UI进阶笔记:从 Toolbar 到可折叠标题栏的完整实战

学习 Android 开发的过程中&#xff0c;UI 控件往往是最直观也最容易踩坑的部分。本文整理了我在学习《第一行代码》后的实践笔记&#xff0c;涵盖 Toolbar、自定义标题栏、菜单、Snackbar、CoordinatorLayout、可折叠标题栏、SwipeRefreshLayout 下拉刷新、FloatingActionButt…

计算机网络---http(超文本传输协议)

1. HTTP的定义与核心属性 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是万维网&#xff08;WWW&#xff09;的核心通信协议&#xff0c;定义了客户端&#xff08;如浏览器、APP&#xff09;与服务器之间如何传输“超文本”&#xff08…

【qml-7】qml与c++交互(自动补全提示)

背景&#xff1a; 【qml-5】qml与c交互&#xff08;类型单例&#xff09; 之前记录过qml与c交互的方式&#xff0c;目前为止我使用的是“类型单例”方式。这些名字是我自己起的&#xff0c;只为说明问题&#xff0c;严谨的还是以手册为准。 “类型单例”方式时提到过自动补全…

网页提示UI操作-适应提示,警告,信息——仙盟创梦IDE

代码<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原生动态提示框</title><style>…

第八篇 永磁同步电机控制-MTPA、MTPV

永磁同步电机控制系列课程&#xff1a; 第一篇 永磁同步电机控制-认识电机 第二篇 永磁同步电机控制-电机的分类 第三篇 永磁同步电机控制-硬件基础知识 第四篇 永磁同步电机控制-软件基础知识 第五篇 永磁同步电机控制-数学模型 第六篇 永磁同步电机控制-控制方法 第七…