
/// SYSTEM READY ///
🌊 🌉 🌊 心手合一 · 水到渠成

| >>> ACCESS TERMINAL <<< | |
| [ 🦾 作者主页 ] | [ 🔥 C++初阶 ] |
| [ 💾C++进阶 ] | [ 📡 代码仓库 ] |
Running Process: 100% | Latency: 0ms
索引与导读
前言
在 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 作为软件管家
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):
- 第一步: 更新本地软件列表
sudo apt update
- 第二步: 安装你需要的软件
sudo apt install htop
1.10 国内 Linux 软件安装源的官方链接
1. 阿里云官方镜像站
- 官方链接:阿里云官方镜像站
- 阿里云提供了丰富的
Linux发行版镜像,包括CentOS、Ubuntu、Debian等,用户可以通过该镜像站快速下载和更新软件包
2. 清华大学开源软件镜像站
- 官方链接:清华大学开源软件镜像站
- 清华大学镜像站提供了多种
Linux发行版的镜像,以及Python、Perl、Ruby等编程语言的扩展包 该镜像站还提供了丰富的文档和教程,帮助用户更好地使用这些软件包
3. 中国科学技术大学开源镜像站
- 官方链接:中国科学技术大学开源镜像站
- 中科大镜像站提供了多种
Linux发行版的镜像,以及常用的编程语言和开发工具 用户可以通过该镜像站方便地获取所需的软件包和工具
4. 北京交通大学自由与开源软件镜像站
- 官方链接:北京交通大学自由与开源软件镜像站
- 北交大镜像站提供了多种
Linux发行版的镜像,以及相关的软件仓库和工具 该镜像站还提供了详细的文档和指南,帮助用户配置和使用这些软件
5. 中国科学院软件研究所镜像站(ISCAS)
- 官方链接:中国科学院软件研究所镜像站
ISCAS镜像站提供了多种Linux发行版、编程语言和开发工具的镜像 用户可以通过该镜像站快速获取所需的软件包和更新
6. 上海交通大学开源镜像站
- 官方链接:上海交通大学开源镜像站
- 上海交大镜像站提供了丰富的
Linux软件资源,包括多种发行版的镜像和软件仓库 用户可以通过该镜像站方便地下载和安装所需的软件包
7. 网易开源镜像站
- 官方链接:网易开源镜像站
- 网易镜像站提供了多种
Linux发行版的镜像,以及相关的软件仓库和工具 该镜像站还提供了便捷的搜索功能,帮助用户快速找到所需的软件包
1.11 为什么会有人免费特定社区提供软件,还发布?还提供云服务器让你下载
1)构建开源生态系统
在 Linux 世界中,软件的价值往往通过“分发”和“共享”来实现
- 开源文化与协作:开发者将编写的源代码贡献出来,允许其他人进行编译和发布 这种模式鼓励全球开发者共同修复漏洞或增加功能
- 标准化分发:为了让软件能在
Ubuntu或CentOS等不同环境下运行,开发者或社区组织会义务维护这些针对特定系统的软件包
2)降低用户门槛与提升便利性
提供软件包服务器的主要目的是为了极大地简化用户的操作
-
自动化依赖处理:如果每个人都手动编译,环境配置会异常复杂 通过集中式的服务器,包管理器(
yum/apt)可以一键解决安装过程中的依赖关系 -
信任与安全:特定社区提供的软件源通常经过审核,用户可以从这些受信任的“云服务器”中安全、快速地下载并安装软件
3)个人与品牌的长远价值
从开发者(即你之前关注的“内容创作者”视角)来看,这种投入并非完全“免费”:
-
提升影响力:发布高质量的工具可以为开发者积累声望 例如,在
CSDN等平台分享教程和工具包,有助于建立专业形象并吸引志同道合的合作者 -
商业或学术驱动:许多免费软件是大型项目的一部分,或者是为了推广某种技术标准
4)谁在支付“服务器”成本?
提供这些下载服务确实需要成本,通常由以下几类实体承担:
-
非营利组织与基金会:如
Apache、Linux基金会 -
企业赞助:大型科技公司为了构建自己的生态圈(例如为了推广自家的云环境),会赞助带宽和服务器
-
大学与科研机构:许多著名的软件源(如国内的清华、中科大镜像站)由高校维护,旨在支持学术和技术研究
二、yum具体操作
1)查看软件包
1. CentOS 系统:使用 yum 搜索包
在 CentOS 中,软件包管理主要使用 yum 工具

- 核心命令:
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: 维护者及其联系邮箱
- Version:
2)安装软件
通过yum,我们可以通过很简单的一条命令完成 gcc 的安装
1. Centos
sudo yum install -y lrzsz
2. Ubuntu
sudo apt install -y lrzsz
注意事项:
- 安装软件时由于需要向系统目录中写入内容,一般需要
sudo或者切到root账户下才能完成 yum/apt安装软件只能一个装完了再装另一个正在yum/apt安装一个软件的过程中,如果再尝试用yum/apt安装另外一个软件,yum/apt会报错- 如果
yum/apt报错,请自行百度
3)卸载软件
1. Centos
sudo yum remove [-y] lrzsz
2. Ubuntu
sudo apt remove [-y] lrzsz
4)注意事项
关于 yum/apt 的所有操作必须保证主机(虚拟机)网络通畅!!!
可以通过 ping 指令验证
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/目录下
- 与
💻结尾— 核心连接协议
警告: 🌠🌠正在接入底层技术矩阵。如果你已成功破解学习中的逻辑断层,请执行以下指令序列以同步数据:🌠🌠
【📡】 建立深度链接: 关注本终端。在赛博丛林中深耕底层架构,从原始代码到进阶协议,同步见证每一次系统升级。
【⚡】 能量过载分发: 执行点赞操作。通过高带宽分发,让优质模组在信息流中高亮显示,赋予知识跨维度的传播力。
【💾】 离线缓存核心: 将本页加入收藏。把这些高频实战逻辑存入你的离线存储器,在遭遇系统崩溃或需要离线检索时,实现瞬时读取。
【💬】 协议加密解密: 在评论区留下你的散列码。分享你曾遭遇的代码冲突或系统漏洞(那些年踩过的坑),通过交互式编译共同绕过技术陷阱。
【🛰️】 信号频率投票: 通过投票发射你的选择。你的每一次点击都在重新定义矩阵的进化方向,决定下一个被全量拆解的技术节点。


转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/fengtinghuqu520/article/details/161088821



