
⚡ CYBER_PROFILE ⚡
/// SYSTEM READY ///
WARNING \]: DETECTING HIGH ENERGY **🌊 🌉 🌊 心手合一 · 水到渠成**  |------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | **\>\>\> ACCESS TERMINAL \<\<\<** || | [**\[ 🦾 作者主页 \]**](https://blog.csdn.net/fengtinghuqu520?spm=1000.2115.3001.5343) | [**\[ 🔥 C++初阶 \]**](https://blog.csdn.net/fengtinghuqu520/category_13085789.html) | | [**\[ 💾C++进阶 \]**](https://blog.csdn.net/fengtinghuqu520/category_13085793.html) | [**\[ 📡 代码仓库 \]**](https://blog.csdn.net/fengtinghuqu520/article/details/147275999?spm=1001.2014.3001.5502) | --------------------------------------- Running Process: 100% \| Latency: 0ms *** ** * ** *** #### 索引与导读 * [前言](#前言) * * [一、初步了解 软件包管理器](#一、初步了解 软件包管理器) * * [1.1 核心职能](#1.1 核心职能) * [1.2 什么是软件包?](#1.2 什么是软件包?) * [1.3 常见的软件包格式](#1.3 常见的软件包格式) * [1.4 软件包和软件包管理器](#1.4 软件包和软件包管理器) * * [常用的软件包管理器](#常用的软件包管理器) * * [1)Yum](#1)Yum) * [2)Apt](#2)Apt) * [1.5 软件包的开发发布流程](#1.5 软件包的开发发布流程) * [1.6 Linux下载软件的过程(Ubuntu、Centos、other)](#1.6 Linux下载软件的过程(Ubuntu、Centos、other)) * [1.7 软件包依赖的问题](#1.7 软件包依赖的问题) * * [1)核心应用层](#1)核心应用层) * [2)直接依赖层](#2)直接依赖层) * [3)间接依赖层 / 传递依赖](#3)间接依赖层 / 传递依赖) * [1.8)国内诞生镜像源的原因](#1.8)国内诞生镜像源的原因) * [1.9 开启一个"额外软件仓库"](#1.9 开启一个“额外软件仓库”) * * [1)CentOS/RedHat 阵营:使用 yum 或 dnf 作为软件管家](#1)CentOS/RedHat 阵营:使用 yum 或 dnf 作为软件管家) * * [安装了 \`epel-release\` 之后:](#安装了 `epel-release` 之后:) * [2)Ubuntu/Debian 阵营:使用 apt 作为软件管家](#2)Ubuntu/Debian 阵营:使用 apt 作为软件管家) * [1.10 国内 \`Linux\` 软件安装源的官方链接](#1.10 国内 `Linux` 软件安装源的官方链接) * [1.11 为什么会有人免费特定社区提供软件,还发布?还提供云服务器让你下载](#1.11 为什么会有人免费特定社区提供软件,还发布?还提供云服务器让你下载) * * [1)构建开源生态系统](#1)构建开源生态系统) * [2)降低用户门槛与提升便利性](#2)降低用户门槛与提升便利性) * [3)个人与品牌的长远价值](#3)个人与品牌的长远价值) * [4)谁在支付"服务器"成本?](#4)谁在支付“服务器”成本?) * [二、yum具体操作](#二、yum具体操作) * * [1)查看软件包](#1)查看软件包) * * [1. CentOS 系统:使用 \`yum\` 搜索包](#1. CentOS 系统:使用 `yum` 搜索包) * [2. Ubuntu 系统:使用 \`apt\` 搜索与查看详情](#2. Ubuntu 系统:使用 `apt` 搜索与查看详情) * [2)安装软件](#2)安装软件) * * [1. Centos](#1. Centos) * [2. Ubuntu](#2. Ubuntu) * [3)卸载软件](#3)卸载软件) * * [1. Centos](#1. Centos) * [2. Ubuntu](#2. Ubuntu) * [4)注意事项](#4)注意事项) * [三、安装源](#三、安装源) * * [1. CentOS 安装源路径](#1. CentOS 安装源路径) * [2. Ubuntu 安装源路径](#2. Ubuntu 安装源路径) * [💻结尾--- 核心连接协议](#💻结尾— 核心连接协议) ## 前言 在 Linux 系统的运维与管理中,高效的包管理工具是提升工作效率的关键 `yum (Yellowdog Updater, Modified)` 凭借其强大的依赖关系自动处理能力,成为了开发者和系统管理员的首选 本章节将重点围绕 **学习yum工具,进行软件安装** ,带你深入学习 yum 工具的配置与使用,旨在帮助读者**熟练掌握如何在 Linux 环境下进行软件安装、卸载及更新,构建稳健的系统运行环境** ### 一、初步了解 软件包管理器 **软件包管理器**是一组用于在操作系统中自动安装、配置、卸载和更新软件的工具。它将复杂的软件编译和环境配置过程简化为几条简单的指令 #### 1.1 核心职能 * **自动处理依赖关系**:软件通常需要其他插件或库(依赖)才能运行。管理器会自动识别并下载这些必要的组件。 * **集中式分发**:软件从受信任的官方服务器(软件源/仓库)下载,确保了安全性。 * **版本控制**:方便用户将所有已安装软件一键升级到最新版本,或在必要时回滚 *** ** * ** *** #### 1.2 什么是软件包? **一个完整的软件包通常包含以下三个关键部分:** * 二进制程序/资源文件: 实际运行的机器代码、图标、库文件等(类似于礼盒里的产品) * 元数据(Metadata): 记录了软件包的名称、版本号、作者、软件描述以及适用的系统平台(类似于产品说明书) * 控制信息与脚本: 包含安装前后的预处理脚本(如创建文件夹、修改权限等)以及最重要的依赖关系列表 *** ** * ** *** #### 1.3 常见的软件包格式 根据操作系统的不同,软件包有不同的"封装规范": | 操作系统类型 | 常见格式 | 特点 | |-------------------|----------------|-------------------------------------------------| | `Windows` | `.msi`, `.exe` | 常见的安装程序包。 | | `macOS` | `.dmg`, `.pkg` | 磁盘映像或安装包。 | | `Linux`(RedHat系列) | `.rpm` | 常用在 `CentOS`、`Fedora` 中,也是你学习 `yum` 工具时操作的主要对象。 | | `Linux`(Debian系列) | `.deb` | 常用在 `Ubuntu`、`Deepin` 中 | *** ** * ** *** #### 1.4 软件包和软件包管理器 软件包和软件包管理器,就好比**APP** 和**应用商店**这样的关系 ##### 常用的软件包管理器 ###### 1)Yum * **适用发行版** :主要应用在 `Fedora`、`RedHat` (`RHEL`) 以及 `CentOS` 等发行版上 * **核心地位**:它是这些系统中最常用的包管理器 * **功能特点** :能够从指定的服务器自动下载 `RPM` 包并安装,最重要的是它能自动处理依赖关系,一次性安装所有依赖的软件包 ###### 2)Apt * **适用发行版** :`Ubuntu` 系统主要使用 `apt` 作为其包管理器 * **功能特点** :与 `yum` 类似,`apt` 同样提供了自动解决依赖关系、下载和安装软件包的功能 它是 `Debian` 及其衍生版(如 `Ubuntu`、`Linux Mint`)的核心工具 *** ** * ** *** #### 1.5 软件包的开发发布流程  **1. 开发阶段 (Development)** 在流程的最右侧,开发者 (Developer) 负责编写 **源代码 (Source Code)** 这是整个软件生命的起点 **2. 编译发布 (Build \& Release)** 源代码编写完成后,进入"编译发布"阶段 由于 `Linux` 系统存在不同的发行版,代码需要针对不同的环境进行构建: * **Ubuntu 软件包** :如 `.deb` 格式 * **Centos 软件包** :如 `.rpm` 格式 * **其他 Linux 环境软件包**:针对特定内核或架构定制的包 这一步确保了软件能够在不同的操作系统环境中正常运行 **3. 上线与存储 (Deployment \& Storage)** 编译生成的软件包通过"上线"流程,被上传到左侧的 **软件包服务器 (Package Server)** 图中展示了服务器中存储的多个版本或不同功能的包(软件包1、软件包2... 软件包8) 软件包服务器充当了"仓库"(`Repository`) 的角色,类似于我们常用的 `opt` 源或 `yum` 源 **整个流程形成了一个闭环:** 开发者 → 源代码 → 多环境编译 → 软件包服务器 *** ** * ** *** #### 1.6 Linux下载软件的过程(Ubuntu、Centos、other)  **1. 供应端:软件包的产生与上线** 在图片的最右侧,我们可以看到针对不同 `Linux` 发行版(如 `Ubuntu`、`CentOS` 等)编译好的软件包 * 这些包被"上线"上传到中间的 **软件包服务器**(即我们常说的"软件源"或"仓库") * 服务器像一个大型仓库,分门别类地存储了各种软件(软件包1、2...8) **2. 交互过程:查找与请求** 中间的箭头描述了你的服务器(客户端)是如何与远程仓库对话的: * **查询、下载请求** :当你输入类似 `yum install` 或 `apt install` 的命令时,包管理器会向服务器发送请求,询问是否有对应的软件包 * **下载返回**:服务器验证请求后,将对应的软件包数据流传回你的本地服务器 **3. 消费端:本地包管理器的职责** 图片左侧是 **你的云服务器** 内部的操作逻辑 包管理器(`yum`/`apt`)不仅仅是下载工具,它还承担了极其重要的自动化任务: * **解决依赖** :这是最核心的功能 如果你安装 `A` 需要 `B`,包管理器会自动帮你找到并下载 `B` * **下载/安装/卸载**:自动化执行解压、配置环境变量、清理垃圾文件等繁琐步骤 *** ** * ** *** #### 1.7 软件包依赖的问题  ##### 1)核心应用层 * **你的软件/你要的软件**:这是整个链条的起点,代表你编写的主程序或准备安装的目标软件 ##### 2)直接依赖层 主程序为了实现功能,直接调用了三个动态链接库: * `libc.so`:这是最基础的 `C` 标准库,几乎所有的 `Linux` 软件都依赖它 * `ssl.so`:通常用于处理加密通信(如 `HTTPS` 或 `SSL/TLS` 加密) * `libhttplib.so`:这可能是一个专门处理 `HTTP` 请求的网络库 ##### 3)间接依赖层 / 传递依赖 这是开发者最容易忽略的部分 主程序并没有直接调用黄色节点的库,但因为它依赖的 `libhttplib.so` 必须有这些库才能运行,所以它们也被拉进了依赖链: * `XXX.so`:代表 `libhttplib.so` 所需的某种特定功能扩展 * `libc++.so`:这是 `C++` 标准库 这意味着 `libhttplib.so` 是用 `C++` 编写的,因此需要 `C++` 运行时环境的支持 *** ** * ** *** #### 1.8)国内诞生镜像源的原因  **1. 跨越地理与网络障碍的"中转站"** 图中顶部显示了软件的源头:开发者编写源代码,经过编译发布后,上线到国外软件包服务器 * **连接脆弱性**:图片中从"你的云服务器"指向"国外服务器"的线条是虚线,且标注为"查找、下载请求" 在实际环境下,由于跨地域传输物理距离和网络带宽,这条路径经常面临高延迟和丢包风险 * **镜像的意义** :中间那个巨大的向下蓝色箭头代表了"镜像(`Mirror`)"过程 国内机构(如阿里、清华等)预先将国外的海量软件包同步到国内软件包服务器 这样,原本不稳定的虚线路由就变成了指向国内服务器的实线连接,极大地提高了下载成功率 *** ** * ** *** **2. 包管理器的"地址重定向"** 图片左侧有一个关键的操作:将 `国外.conf` 替换为 `国内.conf` * **配置文件核心** :包管理器(如 `yum`, `apt`)默认会去读取官方的配置文件,这些地址通常指向国外 * **无感切换** :国内镜像源之所以多,是因为各大云厂商和高校都在争相提供更优质的 `conf` 模板 用户只需一行命令替换配置,就能将请求重定向到国内,从而享受本地化的极速体验 *** ** * ** *** **3. 满足复杂的依赖链条** 结合我们之前讨论的依赖问题,包管理器在执行"解决依赖/下载/安装"时,并不是只下载一个文件 * **依赖链及依赖度**:正如图片中显示的"软件包1"到"软件包8",一个软件可能需要几十个依赖包 * **容错性要求**:如果其中任何一个小的依赖包因为连接国外服务器超时而失败,整个软件安装都会中断 国内镜像源通过完整的数据同步,确保了整棵"依赖树"都能在国内服务器上一次性、连续地获取到 *** ** * ** *** **4. 商业与学术生态的驱动** * **云厂商(左图)**:"你的云服务器":阿里、腾讯等云服务商为了让用户在他们的云平台上体验更好,必须建立自有的镜像源,提供内网免流量下载 * **科研教育机构**:清华、中科大等高校镜像源是为了方便师生进行科学研究,避免昂贵的国际出口流量费用,并确保学术工具的即时获取 *** ** * ** *** #### 1.9 开启一个"额外软件仓库" ##### 1)CentOS/RedHat 阵营:使用 yum 或 dnf 作为软件管家 ```bash sudo yum install -y epel-release ``` **1. 命令拆解** * `sudo`:以系统管理员(`Root`)权限执行 安装软件需要最高权限 * `yum`:这是这类 `Linux` 系统自带的"软件管家"(包管理器) * `install`:告诉管家你要安装一个新东西 * `-y`:这是一个"省事"参数 在安装过程中系统通常会问你"确定要安装吗?",加上 `-y` 相当于提前回答了"`Yes`",让安装过程自动完成 * `epel-release`:这是你要安装的软件包名称 *** ** * ** *** **2. 什么是 EPEL?** `EPEL` 的全称是 **Extra Packages for Enterprise Linux** 默认情况下,`CentOS` 或 `RHEL` 的官方仓库为了保证系统极度稳定,只收录了非常有限的基础软件 如果你想安装一些常用的流行工具(比如 `htop`、`nginx`、`screen` 等),官方仓库里可能根本找不到 *** ** * ** *** ###### 安装了 `epel-release` 之后: 就像给你的手机应用商店增加了一个"第三方精品专区" 它由 `Fedora` 团队维护,提供了数千个高质量、免费且开源的扩展软件包 *** ** * ** *** **3. 执行后的效果** 一旦这条命令运行成功,你的系统就具备了安装更多软件的能力 例如,以前你直接搜 `yum install http` 可能会报错"找不到包";但在运行完这条命令后,你就可以轻松通过 `yum` 安装这些额外的工具了 **总结:** 这是一条"准备工作"命令,目的是为了让你的服务器能下载到更多、更丰富的软件 *** ** * ** *** ##### 2)Ubuntu/Debian 阵营:使用 apt 作为软件管家 在 Ubuntu 中,你不需要安装 epel-release,因为 Ubuntu 的官方仓库里包含的软件本来就非常多,通常直接使用 apt 即可 如果你原本想通过 yum install 安装某个软件(比如 htop): * **第一步:** 更新本地软件列表 ```bash sudo apt update ``` * **第二步:** 安装你需要的软件 ```bash sudo apt install htop ``` *** ** * ** *** #### 1.10 国内 `Linux` 软件安装源的官方链接 **1. 阿里云官方镜像站** * 官方链接:[阿里云官方镜像站](https://developer.aliyun.com/mirror/) * 阿里云提供了丰富的 `Linux` 发行版镜像,包括 `CentOS`、`Ubuntu`、`Debian` 等,用户可以通过该镜像站快速下载和更新软件包 **2. 清华大学开源软件镜像站** * 官方链接:[清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/) * 清华大学镜像站提供了多种 `Linux` 发行版的镜像,以及 `Python`、`Perl`、`Ruby` 等编程语言的扩展包 该镜像站还提供了丰富的文档和教程,帮助用户更好地使用这些软件包 **3. 中国科学技术大学开源镜像站** * 官方链接:[中国科学技术大学开源镜像站](http://mirrors.ustc.edu.cn/) * 中科大镜像站提供了多种 `Linux` 发行版的镜像,以及常用的编程语言和开发工具 用户可以通过该镜像站方便地获取所需的软件包和工具 **4. 北京交通大学自由与开源软件镜像站** * 官方链接:[北京交通大学自由与开源软件镜像站](https://mirror.bjtu.edu.cn/) * 北交大镜像站提供了多种 `Linux` 发行版的镜像,以及相关的软件仓库和工具 该镜像站还提供了详细的文档和指南,帮助用户配置和使用这些软件 **5. 中国科学院软件研究所镜像站(ISCAS)** * 官方链接:[中国科学院软件研究所镜像站](http://mirror.iscas.ac.cn/) * `ISCAS` 镜像站提供了多种 `Linux` 发行版、编程语言和开发工具的镜像 用户可以通过该镜像站快速获取所需的软件包和更新 **6. 上海交通大学开源镜像站** * 官方链接:[上海交通大学开源镜像站](https://ftp.sjtu.edu.cn/) * 上海交大镜像站提供了丰富的 `Linux` 软件资源,包括多种发行版的镜像和软件仓库 用户可以通过该镜像站方便地下载和安装所需的软件包 **7. 网易开源镜像站** * 官方链接:[网易开源镜像站](http://mirrors.163.com/) * 网易镜像站提供了多种 `Linux` 发行版的镜像,以及相关的软件仓库和工具 该镜像站还提供了便捷的搜索功能,帮助用户快速找到所需的软件包 *** ** * ** *** #### 1.11 为什么会有人免费特定社区提供软件,还发布?还提供云服务器让你下载 ##### 1)构建开源生态系统 在 `Linux` 世界中,软件的价值往往通过"分发"和"共享"来实现 * **开源文化与协作**:开发者将编写的源代码贡献出来,允许其他人进行编译和发布 这种模式鼓励全球开发者共同修复漏洞或增加功能 * **标准化分发** :为了让软件能在 `Ubuntu` 或 `CentOS` 等不同环境下运行,开发者或社区组织会义务维护这些针对特定系统的软件包 *** ** * ** *** ##### 2)降低用户门槛与提升便利性 提供软件包服务器的主要目的是**为了极大地简化用户的操作** * **自动化依赖处理** :如果每个人都手动编译,环境配置会异常复杂 通过集中式的服务器,包管理器(`yum`/`apt`)可以一键解决安装过程中的依赖关系 * **信任与安全**:特定社区提供的软件源通常经过审核,用户可以从这些受信任的"云服务器"中安全、快速地下载并安装软件 *** ** * ** *** ##### 3)个人与品牌的长远价值 从开发者(即你之前关注的"内容创作者"视角)来看,这种投入并非完全"免费": * **提升影响力** :发布高质量的工具可以为开发者积累声望 例如,在 `CSDN` 等平台分享教程和工具包,有助于建立专业形象并吸引志同道合的合作者 * **商业或学术驱动**:许多免费软件是大型项目的一部分,或者是为了推广某种技术标准 *** ** * ** *** ##### 4)谁在支付"服务器"成本? 提供这些下载服务确实需要成本,通常由以下几类实体承担: * **非营利组织与基金会** :如 `Apache`、`Linux` 基金会 * **企业赞助**:大型科技公司为了构建自己的生态圈(例如为了推广自家的云环境),会赞助带宽和服务器 * **大学与科研机构**:许多著名的软件源(如国内的清华、中科大镜像站)由高校维护,旨在支持学术和技术研究 *** ** * ** *** ### 二、yum具体操作 #### 1)查看软件包 ##### 1. CentOS 系统:使用 `yum` 搜索包 在 `CentOS` 中,软件包管理主要使用 `yum` 工具  * **核心命令**: ```bash yum list | grep lrzsz ``` * **结果解读**: * `lrzsz.x86_64`:包名及其架构(`64` 位) * `0.12.20-36.e17`:版本号 * `@base`:表示该包来源于基础软件源(`base`) *** ** * ** *** ##### 2. Ubuntu 系统:使用 `apt` 搜索与查看详情  `Ubuntu` 使用 `apt` 作为包管理器 图片展示了两个重要的操作: **A. 搜索软件包(`apt search`)** * **命令** : `$ apt search lrzsz` * **功能**: 在本地索引中搜索与"lrzsz"相关的包 *** ** * ** *** **B. 查看包详情(`apt show`)** * **命令** : `$ apt show lrzsz` * **功能**: 显示指定软件包的详细元数据 * **关键字段解析(图片下半部分)**: * **Version** : `0.12.21-10` (具体版本) * **Priority** : `optional` (优先级: 可选) * **Section** : `universe/comm` (所属分类: 社区维护的开源软件/通信类) * **Origin** : `Ubuntu` (来源) * **Maintainer**: 维护者及其联系邮箱 *** ** * ** *** #### 2)安装软件 通过`yum`,我们可以通过很简单的一条命令完成 `gcc` 的安装 ##### 1. Centos ```bash sudo yum install -y lrzsz ``` *** ** * ** *** ##### 2. Ubuntu ```bash sudo apt install -y lrzsz ``` *** ** * ** *** **注意事项:** * **安装软件时由于需要向系统目录中写入内容,一般需要 `sudo` 或者切到 `root` 账户下才能完成** * `yum`/`apt` 安装软件只能一个装完了再装另一个正在 `yum`/`apt` 安装一个软件的过程中,如果再尝试用 `yum`/`apt` 安装另外一个软件,`yum`/`apt` 会报错 * 如果 `yum` / `apt` 报错,请自行百度 *** ** * ** *** #### 3)卸载软件 ##### 1. Centos ```bash sudo yum remove [-y] lrzsz ``` *** ** * ** *** ##### 2. Ubuntu ```bash sudo apt remove [-y] lrzsz ``` *** ** * ** *** #### 4)注意事项 关于 yum/apt 的所有操作必须保证主机(虚拟机)网络通畅!!! 可以通过 ping 指令验证 ```bash ping www.baidu.com ``` *** ** * ** *** ### 三、安装源 #### 1. CentOS 安装源路径 `CentOS` 使用的是 `yum`(或较新版本的 `dnf`)包管理器 * **核心路径** : `/etc/yum.repos.d/` * **文件解析**: * 这个目录下存放的都是以 `.repo` 结尾的配置文件 * `CentOS-Base.repo`:官方的标准源,包含系统核心组件和基础工具 * `epel.repo`:即 **Extra Packages for Enterprise Linux** 这是由 `Fedora` 社区维护的高质量扩展软件源,提供了许多标准源里没有的软件 * **常用操作**: * **命令 `sudo yum install -y epel-release`**,这就是在系统中安装并启用扩展源的方法 *** ** * ** *** #### 2. Ubuntu 安装源路径 `Ubuntu` 使用的是 `apt` 包管理器 * **核心文件/路径:** * `/etc/apt/sources.list`:这是 `Ubuntu` 的标准源主配置文件,里面列出了官方所有的主服务器地址 * `/etc/apt/sources.list.d/`:这是扩展源目录 如果你安装了第三方软件(比如 `Docker`、`VS Code` 等),它们的源配置通常会以独立的 `.list` 文件存放在这里,方便管理而不破坏主配置文件 * **逻辑差异:** * 与 `CentOS` 每个源就是一个文件不同,`Ubuntu` 习惯于将主要源全部写在 `sources.list` 一个文件里,只有第三方或特殊的源才放在 `.d/` 目录下 *** ** * ** *** ## 💻结尾--- 核心连接协议 **警告:** 🌠🌠正在接入底层技术矩阵。如果你已成功破解学习中的逻辑断层,请执行以下指令序列以同步数据:🌠🌠 *** ** * ** *** **【📡】 建立深度链接:** **关注**本终端。在赛博丛林中深耕底层架构,从原始代码到进阶协议,同步见证每一次系统升级。 **【⚡】 能量过载分发:** 执行**点赞**操作。通过高带宽分发,让优质模组在信息流中高亮显示,赋予知识跨维度的传播力。 **【💾】 离线缓存核心:** 将本页加入**收藏**。把这些高频实战逻辑存入你的离线存储器,在遭遇系统崩溃或需要离线检索时,实现瞬时读取。 **【💬】 协议加密解密:** 在**评论区**留下你的散列码。分享你曾遭遇的代码冲突或系统漏洞(那些年踩过的坑),通过交互式编译共同绕过技术陷阱。 **【🛰️】 信号频率投票:** 通过**投票**发射你的选择。你的每一次点击都在重新定义矩阵的进化方向,决定下一个被全量拆解的技术节点。 *** ** * ** ***  