linux-软件包管理-包管理工具(RedHat/CentOS 系)

server/2024/9/22 19:03:16/

Linux 软件包管理:包管理工具(RedHat/CentOS 系)

一、概述

在 Linux 操作系统中,软件包管理是系统维护的重要部分,它允许用户安装、升级、卸载和查询软件包。不同的 Linux 发行版使用不同的包管理工具。对于 RedHat 和 CentOS 系统,主要的包管理工具包括 RPMYUM。在较新的 CentOS 8 和 RedHat 8 中,YUM 进一步被 DNF 所取代。

  • RPM (Red Hat Package Manager) 是一种底层的包管理工具,用于安装、查询、删除软件包。
  • YUM (Yellowdog Updater, Modified) 是一个高层的包管理工具,它在 RPM 的基础上,提供了解决依赖关系和自动化安装的能力。
  • DNF (Dandified YUM) 是 YUM 的下一代版本,解决了 YUM 的一些性能和依赖处理问题。

二、RPM 包管理工具

1. RPM 介绍

RPM 是 RedHat 系列发行版中最基础的包管理工具,它以 .rpm 文件为单位管理软件。RPM 的主要特点是安装和管理已编译的软件包,而不会自动解决软件依赖关系,这意味着用户在安装软件时,必须自行确保依赖项的满足。

2. RPM 常用命令

1. 安装软件包

使用 RPM 安装 .rpm 文件,通常格式为:

rpm -ivh package.rpm

选项解释:

  • -i:表示安装。
  • -v:显示详细信息。
  • -h:以进度条形式显示安装过程。

示例:

rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm
2. 查询已安装的软件包

查询系统中已安装的软件包:

rpm -qa
  • -q:查询。
  • -a:显示系统中所有已安装的包。

查询特定包的信息:

rpm -qi package_name

例如,查询 httpd 包的信息:

rpm -qi httpd
3. 删除软件包

使用 -e 选项卸载指定的软件包:

rpm -e package_name

例如,卸载 httpd 软件包:

rpm -e httpd
4. 升级软件包

如果要升级已安装的软件包,使用 -U 选项:

rpm -Uvh package.rpm
  • -U:表示升级。若软件包尚未安装则会自动进行安装。
5. 验证软件包

使用 RPM 验证已安装的软件包的完整性:

rpm -V package_name

3. RPM 的局限性

虽然 RPM 是一个非常强大的工具,但它有一些缺点:

  • 依赖管理问题:RPM 并不会自动解决依赖问题。用户必须手动解决软件包之间的依赖关系,这可能导致所谓的“依赖地狱”问题。
  • 没有自动更新功能:RPM 只能手动安装和升级软件包,缺乏自动更新的功能。

为了解决这些问题,RedHat 和 CentOS 系列引入了更高级的包管理工具:YUM


三、YUM 包管理工具

1. YUM 介绍

YUM 是基于 RPM 的高层次包管理工具,它解决了 RPM 手动处理依赖关系的问题。YUM 可以自动解决软件包的依赖项,并且支持从指定的仓库下载和安装软件包。YUM 使得软件的安装、更新、卸载和查询更加简便。

2. YUM 常用命令

1. 安装软件包

使用 YUM 安装软件包非常简单:

yum install package_name

例如,安装 httpd 软件包:

yum install httpd

YUM 会自动从配置的仓库中下载所需的软件包,并解决依赖关系。

2. 更新软件包

更新系统中已安装的软件包:

yum update

如果只想更新某个软件包,可以指定包名:

yum update package_name
3. 卸载软件包

使用 remove 命令卸载指定的软件包:

yum remove package_name

例如,卸载 httpd

yum remove httpd
4. 列出可用的软件包

列出所有可用的软件包:

yum list available

可以列出某个特定软件包的信息:

yum list package_name
5. 搜索软件包

如果不确定软件包的具体名称,可以使用 search 进行搜索:

yum search keyword

例如,搜索与 http 相关的所有软件包:

yum search http
6. 清理缓存

YUM 会在本地缓存仓库中的软件包和元数据。可以使用以下命令清理缓存:

yum clean all
7. 查看包信息

使用 info 选项可以查看包的详细信息:

yum info package_name

例如,查看 httpd 的信息:

yum info httpd

3. YUM 仓库配置

YUM 依赖于配置的仓库,仓库可以是本地存储、网络服务器或者第三方仓库。默认情况下,CentOS 和 RedHat 系统会自带官方的 YUM 仓库,但用户可以根据需要添加第三方仓库。

仓库的配置文件通常位于 /etc/yum.repos.d/ 目录下,每个仓库对应一个 .repo 文件。

仓库配置示例:
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
  • baseurl:仓库的 URL。
  • enabled:是否启用该仓库,1 表示启用。
  • gpgcheck:是否进行 GPG 校验,1 表示开启。

4. YUM 的优缺点

优点

  • 自动处理依赖关系。
  • 支持从网络仓库安装软件包。
  • 提供方便的系统升级和更新管理功能。

缺点

  • 对于大量软件包的更新,速度相对较慢。
  • 依赖仓库的速度和稳定性,如果仓库出现问题,可能会影响包的安装和更新。

四、DNF 包管理工具

1. DNF 介绍

DNF 是 YUM 的下一代版本,它在 YUM 的基础上做了很多改进,包括更快的性能、更好的依赖处理以及内存使用优化。CentOS 8 和 RedHat 8 以及之后的版本已经将 YUM 替换为 DNF。

2. DNF 与 YUM 的主要区别

  • 性能改进:DNF 在处理大量软件包时速度更快,资源占用更低。
  • 依赖解决优化:DNF 提供了更高效的依赖关系处理机制。
  • 插件架构:DNF 更容易通过插件进行扩展和自定义。

3. DNF 常用命令

DNF 的命令和 YUM 基本保持一致,大部分命令和选项都可以互换使用。例如:

  • 安装软件包:

    dnf install package_name
    
  • 更新系统:

    dnf update
    
  • 卸载软件包:

    dnf remove package_name
    
  • 清理缓存:

    dnf clean all
    

DNF 在兼容 YUM 命令的同时提供了更多的功能,比如处理速度更快、更智能的依赖处理和更灵活的插件系统。


五、总结

RedHat/CentOS 系列的包管理工具经历了从 RPM 到 YUM 再到 DNF 的演进,随着工具的进步,包管理的效率和功能也得到了显著提升。RPM 是最基础的工具,但依赖管理较为繁琐;YUM 通过自动化依赖解决和仓库机制极大简化了包管理过程;而 DNF 进一步优化了性能和依赖处理,成为现代 RedHat/CentOS 系统的默认包管理工具。


http://www.ppmy.cn/server/120412.html

相关文章

deadlock detected

目录标题 说明:解决方法:预防措施:如何在PostgreSQL中使用pg_locks视图详细查询死锁涉及的事务信息?PostgreSQL中deadlock_timeout参数的具体配置方法和最佳实践是什么? 配置方法最佳实践在PostgreSQL中,如…

Redis存储原理

前言 我们从redis服务谈起,redis是单reactor,命令在redis-server线程处理。还有若干读写IO线程负责IO操作(redis6.0之后,Redis之pipeline与事务)。此外还有一个内存池线程负责内存管理、一个后台文件线程负责大文件的关…

【Lua坑】Lua协程coroutine无法正常完整执行问题

问题:发现Lua协程执行到一半,突然被掐断了一样等到了设定的时间没有正常执行协程后续代码!非必现bug,若发生大概率在高频率使用协程时易触发。 LuaFramework或xLua uLua都自带有协程coroutine,而且基本都使用对象池缓…

9.19工作笔记

怎么做多空对冲 脚本2怎么实现多空对冲的 首先读取factors和periods中的文件,然后read_coin得到结果strategy里面的cal_factor的作用是将所有的因子排名加权得到一个新的因子,这个就是多因子的做法。其中因子权重为factor_list里面的因子的最后一个元素…

2024年自学手册 网络安全(黑客技术)

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…

【方案】智慧消防建设规划方案(PPT)

1、编制背景及依据 2、需求分析与总体设计 3、消防大数据指挥服务中心 4、智慧消防引擎 5、消防安全感知网络和消防基础通信网络 6、保障体系建设 软件全套资料部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需…

车载软件架构 --- SOA设计与应用(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

qt--Qml控件库如何从外部导入

文章目录 两种方案方案1 给项目添加子项目方案2 使用pri文件 综合来说 : 两种方案 方案1 给项目添加子项目 利用git的特性 对应的子项目就是我们的控件库 然后需要哪个控件 在父项目的qrc路径进行导入 即可将控件库里面的控件给导入项目 在使用的时候 使用模…