关注

【Linux系统编程】Cyberpunk在霓虹丛林中构建堡垒 ——【基础开发工具(1)】一文带你初步了解 软件包管理器 并 快速上手 yum和apt 工具

在这里插入图片描述

⚡ CYBER_PROFILE ⚡
/// SYSTEM READY ///

[ WARNING ]: DETECTING HIGH ENERGY

🌊 🌉 🌊 心手合一 · 水到渠成

分隔符

>>> 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常用在 CentOSFedora 中,也是你学习 yum 工具时操作的主要对象。
Linux(Debian系列).deb常用在 UbuntuDeepin

1.4 软件包和软件包管理器

软件包和软件包管理器,就好比APP应用商店这样的关系

常用的软件包管理器
1)Yum
  • 适用发行版:主要应用在 FedoraRedHat (RHEL) 以及 CentOS 等发行版上

  • 核心地位:它是这些系统中最常用的包管理器

  • 功能特点:能够从指定的服务器自动下载 RPM 包并安装,最重要的是它能自动处理依赖关系,一次性安装所有依赖的软件包

2)Apt
  • 适用发行版Ubuntu 系统主要使用 apt 作为其包管理器

  • 功能特点:与 yum 类似,apt 同样提供了自动解决依赖关系、下载和安装软件包的功能 它是 Debian 及其衍生版(如 UbuntuLinux 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 发行版(如 UbuntuCentOS 等)编译好的软件包

  • 这些包被“上线”上传到中间的 软件包服务器(即我们常说的“软件源”或“仓库”)
  • 服务器像一个大型仓库,分门别类地存储了各种软件(软件包1、2…8)

2. 交互过程:查找与请求

中间的箭头描述了你的服务器(客户端)是如何与远程仓库对话的:

  • 查询、下载请求:当你输入类似 yum installapt install 的命令时,包管理器会向服务器发送请求,询问是否有对应的软件包
  • 下载返回:服务器验证请求后,将对应的软件包数据流传回你的本地服务器

3. 消费端:本地包管理器的职责

图片左侧是 你的云服务器 内部的操作逻辑 包管理器(yum/apt)不仅仅是下载工具,它还承担了极其重要的自动化任务:

  • 解决依赖:这是最核心的功能 如果你安装 A 需要 B,包管理器会自动帮你找到并下载 B
  • 下载/安装/卸载:自动化执行解压、配置环境变量、清理垃圾文件等繁琐步骤

1.7 软件包依赖的问题

在这里插入图片描述

1)核心应用层
  • 你的软件/你要的软件:这是整个链条的起点,代表你编写的主程序或准备安装的目标软件
2)直接依赖层

主程序为了实现功能,直接调用了三个动态链接库:

  • libc.so:这是最基础的 C 标准库,几乎所有的 Linux 软件都依赖它
  • ssl.so:通常用于处理加密通信(如 HTTPSSSL/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

默认情况下,CentOSRHEL 的官方仓库为了保证系统极度稳定,只收录了非常有限的基础软件 如果你想安装一些常用的流行工具(比如 htopnginxscreen 等),官方仓库里可能根本找不到


安装了 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 发行版镜像,包括 CentOSUbuntuDebian 等,用户可以通过该镜像站快速下载和更新软件包

2. 清华大学开源软件镜像站

  • 官方链接:清华大学开源软件镜像站
  • 清华大学镜像站提供了多种 Linux 发行版的镜像,以及 PythonPerlRuby 等编程语言的扩展包 该镜像站还提供了丰富的文档和教程,帮助用户更好地使用这些软件包

3. 中国科学技术大学开源镜像站

  • 官方链接:中国科学技术大学开源镜像站
  • 中科大镜像站提供了多种 Linux 发行版的镜像,以及常用的编程语言和开发工具 用户可以通过该镜像站方便地获取所需的软件包和工具

4. 北京交通大学自由与开源软件镜像站

  • 官方链接:北京交通大学自由与开源软件镜像站
  • 北交大镜像站提供了多种 Linux 发行版的镜像,以及相关的软件仓库和工具 该镜像站还提供了详细的文档和指南,帮助用户配置和使用这些软件

5. 中国科学院软件研究所镜像站(ISCAS)

  • 官方链接:中国科学院软件研究所镜像站
  • ISCAS 镜像站提供了多种 Linux 发行版、编程语言和开发工具的镜像 用户可以通过该镜像站快速获取所需的软件包和更新

6. 上海交通大学开源镜像站

  • 官方链接:上海交通大学开源镜像站
  • 上海交大镜像站提供了丰富的 Linux 软件资源,包括多种发行版的镜像和软件仓库 用户可以通过该镜像站方便地下载和安装所需的软件包

7. 网易开源镜像站

  • 官方链接:网易开源镜像站
  • 网易镜像站提供了多种 Linux 发行版的镜像,以及相关的软件仓库和工具 该镜像站还提供了便捷的搜索功能,帮助用户快速找到所需的软件包

1.11 为什么会有人免费特定社区提供软件,还发布?还提供云服务器让你下载

1)构建开源生态系统

Linux 世界中,软件的价值往往通过“分发”和“共享”来实现

  • 开源文化与协作:开发者将编写的源代码贡献出来,允许其他人进行编译和发布 这种模式鼓励全球开发者共同修复漏洞或增加功能
  • 标准化分发:为了让软件能在 UbuntuCentOS 等不同环境下运行,开发者或社区组织会义务维护这些针对特定系统的软件包

2)降低用户门槛与提升便利性

提供软件包服务器的主要目的是为了极大地简化用户的操作

  • 自动化依赖处理:如果每个人都手动编译,环境配置会异常复杂 通过集中式的服务器,包管理器(yum/apt)可以一键解决安装过程中的依赖关系

  • 信任与安全:特定社区提供的软件源通常经过审核,用户可以从这些受信任的“云服务器”中安全、快速地下载并安装软件


3)个人与品牌的长远价值

从开发者(即你之前关注的“内容创作者”视角)来看,这种投入并非完全“免费”:

  • 提升影响力:发布高质量的工具可以为开发者积累声望 例如,在 CSDN 等平台分享教程和工具包,有助于建立专业形象并吸引志同道合的合作者

  • 商业或学术驱动:许多免费软件是大型项目的一部分,或者是为了推广某种技术标准


4)谁在支付“服务器”成本?

提供这些下载服务确实需要成本,通常由以下几类实体承担:

  • 非营利组织与基金会:如 ApacheLinux 基金会

  • 企业赞助:大型科技公司为了构建自己的生态圈(例如为了推广自家的云环境),会赞助带宽和服务器

  • 大学与科研机构:许多著名的软件源(如国内的清华、中科大镜像站)由高校维护,旨在支持学术和技术研究


二、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: 维护者及其联系邮箱

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/:这是扩展源目录 如果你安装了第三方软件(比如 DockerVS Code 等),它们的源配置通常会以独立的 .list 文件存放在这里,方便管理而不破坏主配置文件
  • 逻辑差异:

    • CentOS 每个源就是一个文件不同,Ubuntu 习惯于将主要源全部写在 sources.list 一个文件里,只有第三方或特殊的源才放在 .d/ 目录下


💻结尾— 核心连接协议

警告: 🌠🌠正在接入底层技术矩阵。如果你已成功破解学习中的逻辑断层,请执行以下指令序列以同步数据:🌠🌠


【📡】 建立深度链接: 关注本终端。在赛博丛林中深耕底层架构,从原始代码到进阶协议,同步见证每一次系统升级。

【⚡】 能量过载分发: 执行点赞操作。通过高带宽分发,让优质模组在信息流中高亮显示,赋予知识跨维度的传播力。

【💾】 离线缓存核心: 将本页加入收藏。把这些高频实战逻辑存入你的离线存储器,在遭遇系统崩溃或需要离线检索时,实现瞬时读取。

【💬】 协议加密解密:评论区留下你的散列码。分享你曾遭遇的代码冲突或系统漏洞(那些年踩过的坑),通过交互式编译共同绕过技术陷阱。

【🛰️】 信号频率投票: 通过投票发射你的选择。你的每一次点击都在重新定义矩阵的进化方向,决定下一个被全量拆解的技术节点。


在这里插入图片描述
在这里插入图片描述

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/fengtinghuqu520/article/details/161088821

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--