【Linux】第十二章 安装和更新软件包

目录

[1. 什么是RPM?](#1. 什么是RPM?)

[2. dnf是什么,它和rpm有什么联系和区别?](#2. dnf是什么,它和rpm有什么联系和区别?)

[3. RHEL 中如何做才能启用对第三方存储库的支持?](#3. RHEL 中如何做才能启用对第三方存储库的支持?)

[4. 怎么理解RHEL9中的应用流(Application Streams)和模块(Modules)?](#4. 怎么理解RHEL9中的应用流(Application Streams)和模块(Modules)?)

[5. RHEL9 有两个必要的软件存储库,分别是什么,它们的主要区别是什么?](#5. RHEL9 有两个必要的软件存储库,分别是什么,它们的主要区别是什么?)


1. 什么是RPM?

RPMR ed Hat P ackage M anager)最早是由 Red Hat 开发的一个软件包管理工具 ,现在已经是很多 Linux 发行版的标准,比如 RHEL , CentOS , Fedora , openSUSE 等。RPM不仅是一种软件包格式,还是一个软件包管理工具集,负责安装、卸载、查询和校验 .rpm 包,但不处理依赖;日常推荐配合 dnf 使用。

RPM 软件包文件名由四个元素组成:name-version-release.architecture

  • Name 是描述软件名。
  • Version 是原始软件版本号。
  • Release 是基于该版本的软件包的发行版号,由软件打包商设置,不一 定是原始软件开发商。
  • Arch 是编译的软件包的处理器架构。noarch表示不限定架构。

2. dnf是什么,它和rpm有什么联系和区别?

DNF(Dandified YUM)取代了 YUM,作为 RHEL9 中的软件包管理器。 DNF 命令在功能上与 YUM 命令相同。出于兼容性考虑,YUM 命令依然 作为 DNF 的符号链接而存在。

DNF 在软件包管理时能够自动解决依赖关系。DNF 安装包,本质上最后还是调用 RPM 完成包安装。但 DNF 会在安装前自动查找需要的依赖,从仓库下载,省去你手动搞依赖的麻烦。

3. RHEL 中如何做才能启用对第三方存储库的支持?

要启用对第三方仓库的支持,可在 /etc/yum.repos.d/ 目录中创建一个文件。仓库配置文件必须以 .repo 扩展名结尾。文件描述一个仓库的基本信息,包括:

  • 仓库名称name。
  • baseurl(服务器地址)
  • gpgcheck = 1/0,开启/禁止检查GPG签名。
  • enabled = 1/0,启用/禁用状态

4. 怎么理解RHEL9中的应用流(Application Streams)和模块(Modules)?

在传统的 RHEL 系统里,一个软件包只有一个版本 ,统一维护,稳定但不灵活 。所以,为了兼顾稳定性+灵活性 ,从 RHEL8 开始,Red Hat 引入了: Application Streams(应用流)和 Modules(模块化软件包)。

Application Streams 就是:**在官方系统仓库中,同时提供多个版本的软件,用户可以自由选择要用哪个版本。**不同应用流版本并行存在,互不冲突,由用户/管理员选择、启用。

Module 是 Application Stream 的实现机制。简单说:**模块是打包成组的软件集合,可以一次性管理安装/更新/启用/禁用。**每个模块可以有:多个流(不同版本)、各自的生命周期和维护政策。

想用哪个版本,就先 enable 哪个 模块流(dnf module enable命令),再 install 安装它。

5. RHEL9 有两个必要的软件存储库,分别是什么,它们的主要区别是什么?

RHEL 9 通过两个主要的软件仓库分发内容,分别为 BaseOS 和 AppStream。

BaseOS :以 RPM 软件包的形式为 RHEL 提供核心操作系统内容 。 BaseOS 组件的生命周期与 RHEL 发行版中的内容相同 。特点是:稳定性极高,很少变动 ,主要是系统自己运行所必需的软件。保证系统基础架构长期稳定,只做安全补丁和重要修复,几乎不添加新特性。

Application Stream提供 具有不同生命周期的内容,作为模块和传统 RPM 软件包 。模块描述了属于一个整体的一组 RPM 软件包。模块可以包含多个流,使多个版本的应用可供安装。启用模块流后,系统能够访问该模块流中的 RPM 软件包。特点是:支持多版本并存,用户可以选择不同版本,更新频率比 BaseOS 高,跟着应用需求走。给用户灵活选择更合适的软件版本,平衡系统稳定性和应用层创新。

相关推荐
yuanmenghao2 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
qq_297574672 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
70asunflower2 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
聆风吟º3 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
神梦流3 小时前
ops-math 算子库的扩展能力:高精度与复数运算的硬件映射策略
服务器·数据库
NPE~3 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
神梦流3 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫3 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
xuhe23 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr