Linux学习篇11——Linux软件包管理利器:RPM与YUM详解与实战指南,包含如何配置失效的YUM镜像地址

引言

本文主要梳理 Linux 系统中的软件包的概念,同时介绍RPM与YUM两大核心管理工具的常用指令、区别联系以及实战技巧等。本文作为作者学习Linux系统的第11篇文章,依旧旨在总结当前的学习内容,同时巩固知识以便日后的学习复习回顾。如有说的不对的地方,还请大佬指正!!

目录

引言

1. Linux系统中的软件包 

1.1 什么是软件包

1.2 软件包的格式与命名规则

 1.3 软件包的依赖问题

2. RPM:基础软件包管理工具

2.1 查询 RPM 包/软件信息

2.2 安装 RPM 包

 2.3 卸载 RPM 包

3. YUM:高级软件仓库管理工具

3.1 YUM 软件仓库配置

3.1 YUM 安装软件

3.2 YUM 更新软件

3.3 YUM 查询仓库软件


1. Linux系统中的软件包 

1.1 什么是软件包

简单来说就是已经将软件的二进制文件、配置文件、手册页等 "打包" 好的文件,方便在Linux系统中进行安装、卸载、管理等。一开始我以为是类似于Windows系统的软件安装包或者是压缩文件,但其实并不是,就是一个软件,而是类似于Windows的 .exe 文件,被整合成一个package的形式。

软件包的格式有所差异,如 RedHat 系用 rpm,Debian 系用 deb,但是整体使用 rpm 为多,本篇也以 rpm 进行介绍。

1.2 软件包的格式与命名规则

以 rpm 为例,软件包的基本格式

软件名-版本号-发布次数.硬件平台.rpm

实例:

tree-1.8.0-1.el8.x86_64.rpm
  • tree:软件名称

  • 1.8.0:主版本号.次版本号.修订号

  • 1:发布次数 (同一个版本源码打了第几次包)

  • el8:适用于 Enterprise Linux 8 (CentOS 8/RHEL 8)

  • x86_64:硬件平台 (64位 Intel/AMD CPU)

 1.3 软件包的依赖问题

Linux系统的软件包的一个核心问题就是很多软件需要相互之间进行依赖才能够运行。

也就是说当我要运行或者是安装A软件时,必须先安装B和C软件。或者是我要卸载A软件时,B软件是依赖A软件的,如果卸载了A软件,B软件也使用不了。

软件包来源分散,需要用户自己寻找。

2. RPM:基础软件包管理工具

RPM的作用是对单个以 .rpm 结尾的软件包文件进行基本的安装、查询、卸载、验证等操作,不能自动解决依赖关系

2.1 查询 RPM 包/软件信息

查询已安装的软件包:

  • rpm -qa:查询所有已安装的rpm包 (q = query, a = all)

  • rpm -q [软件名]:查询指定软件是否安装 (e.g. rpm -q tree)

  • rpm -qi [软件名]:查询指定软件详细信息 (i = information) - 版本,发行号,安装时间,描述等。

  • rpm -ql [软件名]:查询指定软件安装的文件列表 (l = list) - 非常重要!知道软件装了什么文件,装在哪里。

  • rpm -qc [软件名]:查询指定软件配置文件 (c = config files) - 通常都在 /etc 下。

  • rpm -qd [软件名]:查询指定软件文档文件 (d = documentation) - man pages, README等。

  • rpm -qf [文件名]:查询某个文件哪个软件包安装的 (f = file) - 非常有用!

  • rpm -qR [软件名]:查询指定软件依赖 (R = requires) - 看这个软件运行需要什么。

查询未安装的软件包就在以上相关命令的 q 后面加上 p ,并指定 .rpm 文件路径代替软件名。

以 firefox 这个软件为例,我们详细介绍一些查询软件信息的相关指令

我们可以通过 rpm -qa + grep 查询是否存在某一个要查询的软件包

 如果我们想知道firefox这个软件包的文件列表,下载了什么文件,我们也可以通过 rpm -ql 查看

如果我们想知道某款软件包我们是否下载,也可以通过 rpm -q 查看 

如果我们想知道某个软件包的详细信息,也可以通过 rpm -qi 查看

2.2 安装 RPM 包

安装一个 RPM 软件包的 基本指令是

rpm -ivh [包全名]

这里的 ivh 解析:

  • -i:安装 (install)

  • -v:显示详细信息 (verbose)

  • -h:显示安装进度条 (hash)

安装指令的相关选项

  • --nodeps强制安装,忽略依赖。 (危险!可能导致软件无法运行,仅在明确知道后果时使用)

  • --force强制覆盖安装。 (常用于替换现有文件或损坏的包,也需谨慎)

 2.3 卸载 RPM 包

卸载软件包的基本指令是

rpm -e [软件名]

这里的 -e 的意思是 erase ,常用选项是 --nodeps强制卸载,忽略依赖。 (危险!可能破坏依赖此软件的其他程序)

我们以卸载与重新安装 firefox 火狐浏览器为例介绍两种指令的使用。

我们先在系统终端检查时候安装了 firefox 这个软件包

可以看到我们是已经安装好的,接下来我们对火狐浏览器进行卸载。

rpm -e firefox # 对火狐浏览器进行卸载

 

可以看到发出了很多警告,但是没有关系,我们在应用程序上检查是否存在

可以看到,firefox浏览器已经被我们卸载。

那么我们需要重新安装firefox浏览器,那么必须要有firefox的软件安装包,可以再CentOS光盘上找到。我们点开桌面光盘,打开 Package。

里面又各种软件安装包,我们对firefox进行搜索。

将该文件复制到 我们系统的 /opt 目录下。

 可以看到,我们成功将安装包复制到该目录下。我们在终端中输入安装指令。

 rpm -ivh /opt/firefox-68.10.0-1.el7.centos.x86_64.rpm 

 

可以看到已经正常安装了,那么我们再次检查一遍,firefox浏览器是否存在。

 可以看到,已经安装完毕。

3. YUM:高级软件仓库管理工具

其核心作用是基于 RPM 软件包,通过软件仓库 (Repository) 的概念进行自动下载、安装软件,自动解决依赖关系。就好像是我们经常用到的应用商城。

而什么是软件仓库呢??是一个集中存放大量 RPM 软件包及其依赖关系的服务器目录。

配置文件位于 /etc/yum.repos.d/ 目录下,以 .repo 结尾。

注意!!!! CentOS7官方已经停止对于YUM仓库的维护服务,我们系统所配置的镜像地址,所以我们现在使用yum就必须自己配置镜像地址。

下面给出教程

3.1 YUM 软件仓库配置

当我们使用yum相关命令时,会触发一下报错

Could not resolve host: mirrorlist.centos.org; 404 Not Found

我们以安装 tree 指令为例,tree指令的功能是以树的形式查看当前目录的目录结构。

 可以看到我们不能使用yum命令,也不能下载安装tree指令。此时运行yum install tree会因无法连接仓库而失败。

首先我们需要注销失效的镜像地址,打开终端输入以下指令

# 1. 注释失效镜像地址
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

接下来,将可以原有的仓库替换成可用仓库。

# 2. 替换为可用仓库(vault.centos.org或国内镜像)
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

 

 然后更新缓存,注意!这个过程很漫长,需要耐心等待。

# 3. 更新缓存
sudo yum clean all
sudo yum makecache

 

接下来我们就可以重新使用yum指令安装软件仓库内的各种软件包。

以安装tree指令为例

# 4. 安装tree
sudo yum install tree

当我们安装这个指令时,会让我们输入y/n是否下载

 我们输入 y 即可下载完成

3.1 YUM 安装软件

  • yum install [软件名]:从仓库安装最新版本的指定软件及其所有依赖。

  • yum install [软件名]-[版本号]:安装指定版本的软件 (如果仓库有)。

3.2 YUM 更新软件

  • yum update [软件名]:更新指定的软件到仓库中的最新版本(及其依赖)。

  • yum update:更新系统中所有可以通过仓库升级的软件包(包括系统内核)。

3.3 YUM 查询仓库软件

  • yum list:列出仓库中所有可用的软件包 (包括已安装和未安装)。

  • yum list installed:列出所有已安装的软件包。

  • yum list available:列出仓库中可用但尚未安装的软件包。

  • yum list updates:列出所有可用的更新

  • yum list [软件名] / yum list [部分软件名]*:搜索匹配的包。

  • yum info [软件名]:显示软件包的详细信息 (类似 rpm -qi,但信息来自仓库元数据)。

  • yum search [关键词]:在软件包描述、名称中搜索包含关键词的包。

与 RPM 单个软件包不同的是,YUM 可以自动解决软件包之间的依赖关系,但是还是需要自己手动配置好软件仓库,是日常工作的首选。

希望这篇总结能帮你梳理清楚 Linux 软件包管理的核心脉络!结合这个总结多加练习,你一定能熟练掌握 RPM 和 YUM。加油!

欢迎在评论区交流学习心得和遇到的问题!

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

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

相关文章

Vue3+ElementPlus实现可拖拽/吸附/搜索/收起展开的浮动菜单组件

在开发后台管理系统时,我们经常会用到浮动菜单来快速访问某些功能。本篇文章将分享一个基于 Vue3 ElementPlus 实现的浮动菜单组件,支持拖拽移动、边缘吸附、二级菜单展开、菜单搜索过滤、视频弹窗等交互效果,极大提升了用户操作的便捷性与美…

CSS 盒子模型学习版的理解

文章目录一、盒子模型构建流程(一句话抓关键)二、核心逻辑提炼三、代码验证四、一句话总结流程通过手绘图示,清晰拆解 Content(内容)→ Padding(内边距)→ Border(边框)→…

解决线程安全的几个方法

线程安全:线程安全问题的发现与解决-CSDN博客 Java中所使用的并发机制依赖于JVM的实现和CPU的指令。 所以了解并掌握深入Java并发编程基础的前提知识是熟悉JVM的实现了解CPU的指令。 1.volatile简介 在多线程并发编程中,有两个重要的关键字&#xff1a…

大模型应用班-第2课 DeepSeek使用与提示词工程课程重点 学习ollama 安装 用deepseek-r1:1.5b 分析PDF 内容

DeepSeek使用与提示词工程课程重点Homework:ollama 安装 用deepseek-r1:1.5b 分析PDF 内容python 代码建构:1.小模型 1.5b 可以在 笔记本上快速执行2.分析结果还不错3. 重点是提示词 prompt 的写法一、DeepSeek模型创新与特点1. DeepSeek-V3模型特点采用…

在FreeBSD系统下使用llama-cpp运行飞桨开源大模型Ernie4.5 0.3B(失败)

先上结论,截止到目前2025.7.25日,还不能用。也就是Ernie4.5模型无法在llama.cpp 和Ollama上进行推理,原因主要就llama是不支持Ernie4.5异构MoE架构。 不局限于FreeBSD系统,Windows也测试失败,理论上Ubuntu下也是不行。…

OpenCV图像梯度、边缘检测、轮廓绘制、凸包检测大合集

一、图像梯度 在图像处理中,「梯度(Gradient)」是一个非常基础但又极其重要的概念。它是图像边缘检测、特征提取、纹理分析等众多任务的核心。梯度的本质是在空间上描述像素灰度值变化的快慢和方向。 但我们如何在图像中计算梯度?…

GitHub 趋势日报 (2025年07月25日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图1814Resume-Matcher985neko714Qwen3-Coder622OpenBB542BillionMail486hrms219hyper…

编程语言Java——核心技术篇(五)IO流:数据洪流中的航道设计

🌟 你好,我是 励志成为糕手 ! 🌌 在代码的宇宙中,我是那个追逐优雅与性能的星际旅人。 ✨ 每一行代码都是我种下的星光,在逻辑的土壤里生长成璀璨的银河; 🛠️ 每一个算法都是我绘制…

基于FPGA的16QAM软解调+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR

目录 1.引言 2.算法仿真效果 3.算法涉及理论知识概要 3.1 16QAM调制软解调原理 3.2 帧同步 3.3 卷积编码,维特比译码 4.Verilog程序接口 5.参考文献 6.完整算法代码文件获得 1.引言 基于FPGA的16QAM软解调卷积编码Viterbi译码通信系统开发,包含帧同步,高斯…

Python数据分析基础(二)

一、Numpy 常用函数分类概览函数类别常用函数基本数学函数np.sum(x)、np.sqrt(x)、np.exp(x)、np.log(x)、np.sin(x)、np.abs(x)、np.power(a, b)、np.round(x, n) 等统计函数np.mean(x)、np.median(x)、np.std(x)、np.var(x)、np.min(x)、np.max(x)、np.percentile(x, q) 等比…

Colab中如何临时使用udocker(以MinIO为例)

本文主要是想记录一下自己在Colab中用udocker启动一个MinIO的容器的过程。 1. 命令行配置环境 由于目前没有用到GPU,所以我选择的是CPU的环境。(内存12G)然后就可以在命令行里安装udocker了,并配置minio的环境 # 由于minio需要做两个端口映射&#xff0c…

rt-thread 5.2.1 基于at-start-f437开发过程记录

基于rt-thread 5.2.1 bsp/at/at32f437-start进行开发,记录详细过程,包括中间遇到的各种坑。 at32f437-start原理图 自己设计的电路板主要换了一块小封装的同系列芯片, 目标是移植opENer。 1. 开发环境 env长时间不用,有点忘了。这次新下载…

EMCCD相机与电可调变焦透镜的同步控制系统设计与实现

EMCCD相机与电可调变焦透镜的同步控制系统设计与实现 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,觉得好请收藏。点击跳转到网站。 摘要 本文详细介绍了基于Python的EMCCD相机&#xff0…

前缀和-560.和为k的子数组-力扣(LeetCode)

一、题目解析1.子数组是数组中元素的连续非空序列2.nums[i]范围为[-1000,1000],存在负数3.由于2的题目条件,该题不能用双指针算法,不具备单调性 二、算法原理解法1:暴力解法->枚举 O(N^2)固定一个值,向后枚举数组和…

解决企业微信收集表没有图片、文件组件,不能收集图片的问题

问题: 企业微信里面的收集表功能,有一个图片收集的收集表,但是插入的组件没有收集图片的组件? 原因: 大概率是微盘未启用 解决方法: 1、登陆企业微信管理后台 企业微信 2、访问微盘页面,…

认识单片机

《认识单片机》课程内容 一、课程导入 在我们的日常生活中,有很多看似普通却充满智慧的小物件。比如家里的智能电饭煲,它能精准地控制煮饭的时间和温度,让米饭煮得香喷喷的;还有楼道里的声控灯,当有人走过发出声音时&a…

数据结构(2)顺序表算法题

一、移除元素1、题目描述2、算法分析 思路1:查找val值对应的下标pos,执行删除pos位置数据的操作。该方法时间复杂度为O(n^2),因此不建议使用。思路2:创建新数组(空间大小与原数组一致&#xff0…

汽车电子架构

本文试图从Analog Devices官网中的汽车解决方案视角带读者构建起汽车电子的总体架构图,为国内热爱和从事汽车电子行业的伙伴们贡献一份力量。 一 、汽车电子架构总览 整个汽车电子包括四个部分:车身电子(Body Electronics)、座舱与…

pycharm 2025 专业版下载安装教程【附安装包】

安装之前,请确保已经关闭所有安全软件(如杀毒软件、防火墙等)安装包 👇链接:https://pan.xunlei.com/s/VOU-5_L1KOH5j3zDaaCh-Z28A1# 提取码:6bjy下载 PyCharm2025专业版 安装包 并 进行解压运行 pycharm-2…

在 Java 世界里让对象“旅行”:序列化与反序列化

Java 生态里关于 JSON 的序列化与反序列化(以下简称“序列化”)是一个久经考验的话题,却常因框架繁多、配置琐碎而让初学者望而却步。本文将围绕一段极简的 JsonUtils 工具类展开,以 FastJSON 与 Jackson 两大主流实现为例&#x…