如何安装和使用“yum-utils”来维护 Yum 并提高其性能

无论 Fedora 是否开始采用和默认的包管理库,它不会取代旧的在其他衍生发行版中(例如红帽企业 LinuxRHEL) 和中央操作系统)直到它被证明像 yum 一样可靠并且更可靠(根据Fedora 项目维基截至 2015 年 11 月 15 日,dnf仍处于可测试状态)。因此,你的百胜管理技能将在相当长的一段时间内为你服务。

使用“yum-utils”维护 YUM 并提高其性能

因此,在本指南中,我们将向您介绍yum 工具,与 yum 集成的实用程序集合,以多种方式扩展其本机功能,从而使其更强大且更易于使用。

在 RHEL/CentOS 中安装 yum-utils

百胜实用程序包含在基础存储库中(默认情况下启用),因此在任何基于 Fedora 的发行版中安装它就像执行以下操作一样简单:

# yum update && yum install yum-utils

提供的所有实用程序yum 工具与主包一起自动安装,我们将在下一节中描述。

探索 yum-utils 包提供的实用程序

提供的工具yum 工具在其手册页中列出:

# man yum-utils

这是其中 10 个我们认为您会感兴趣的实用程序:

1. 调试包

调试信息安装<package name>安装调试信息调试所需的包(及其依赖项)<package name>在发生崩溃或开发使用特定包的应用程序时。

为了调试包(或任何其他可执行文件),我们还需要安装并用它在调试模式下启动程序。

例如:

# gdb $(which postfix)

上面的命令将启动一个全局数据库外壳我们可以在其中输入要执行的操作。例如,跑步(如下图所示)将启动程序,而BT(未显示)将显示堆栈跟踪(也称为回溯),它将提供导致程序执行中某个点的函数调用列表(使用此信息,开发人员和系统管理员都可以在崩溃时找出问题所在)。

其他可用的操作及其预期结果列于人gdb

在 Linux 中调试包

2. 查找已安装软件包的存储库

以下命令显示当前安装的软件包位于哪个存储库<package 1> <package 2>……<package n>是从以下位置安装的:

# find-repos-of-install httpd postfix dovecot
在 Linux 中查找已安装软件包的存储库

如果不带参数运行,查找安装仓库将返回当前安装的软件包的完整列表。

3. 删除重复或孤立的包

包清理管理包清理、重复、孤立包(从当前配置的存储库以外的源安装的程序)和其他依赖项不一致,包括删除旧内核,如以下示例所示:

# package-cleanup --orphans
# package-cleanup --oldkernels
删除 Linux 中的重复或孤立包

您不必担心最后一个命令会损坏您的内核。它只会影响不再需要的旧内核包(比当前运行的版本更旧的版本)。

4. 找出包依赖列表

回购图返回完整的包依赖项列表已配置存储库中可用的所有包的格式。或者,repo-graph如果与--repoid=<repo>选项。

例如,让我们查看更新存储库中每个包的依赖关系:

# repo-graph --repoid=updates | less
找出包依赖列表

在上面的命令中,我们发送的输出回购图less 以便于可视化,但您也可以将其重定向到本地文件以供以后检查:

# repo-graph --repoid=updates > updates-dependencies.txt

无论哪种情况,我们都可以看到iputil包取决于系统openssl 库

5. 检查未解决的依赖项列表

重新回收读取已配置存储库的元数据,检查其中包含的包的依赖关系并显示每个包的未解决的依赖关系列表:

# repoclosure
显示未解决的依赖关系列表

6. 如何检查目录中最新或最旧的包

重新管理查询包含 rpm 包的目录并返回目录中最新或最旧的包的列表。如果您有一个存储多个目录的目录,则此工具会派上用场.rpm不同程序的包。

当不带参数执行时,重新管理返回最新的包。如果运行--old标志,它将返回最旧的包:

# ls -l
# cd rpms
# ls -l rpms
# repomanage rpms
检查目录中最新最旧的 RPM 包

请注意,更改 rpm 包的名称不会影响重新管理作品。

7. 查询 Yum 存储库以获取有关包的信息

重新查询查询 yum 存储库并获取有关软件包的附加信息,无论它们是否已安装(依赖项、软件包中包含的文件等)。

例如,当前尚未安装在此系统上,如下所示:

# which htop
# rpm -qa | grep htop
查询RPM包

现在假设我们要列出的依赖项顶部,以及默认安装中包含的文件。为此,请分别执行以下两个命令:

# repoquery --requires htop
# repoquery --list htop
列出 RPM 包的依赖项

8. 将所有已安装的 RPM 包转储到 Zip 文件中

yum 调试转储允许您将已安装的所有软件包、任何存储库中可用的所有软件包、重要配置和系统信息的完整列表转储到压缩文件中。

如果您想要调试已发生的问题,这会派上用场。为了我们的方便,yum 调试转储将文件命名为yum_debug_dump-<hostname> -<time> .txt.gz,这使我们能够跟踪随时间的变化。

# yum-debug-dump
将已安装的 RPM 包转储到文件

与任何压缩文本文件一样,我们可以使用以下命令查看其内容兹莱斯命令:

# zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz
查看压缩文本文件的内容

如果您需要恢复由yum 调试转储,你可以使用yum 调试恢复这样做:

# yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz
恢复 Yum 转储文件

9. 从 Yum 存储库下载源 RPM

百胜下载器从存储库下载源 RPM 文件,包括它们的依赖项。对于创建可从 Internet 访问受限的其他计算机进行访问的网络存储库很有用。

百胜下载器不仅允许您下载二进制 RPM,还可以下载源代码(如果与--source选项)。

例如,我们创建一个名为的目录htop 文件我们将在其中存储使用 rpm 安装程序所需的 RPM。为此,我们需要使用--resolve与 yumdownloader 一起切换:

# mkdir htop-files
# cd htop-files
# yumdownloader --resolve htop
# rpm -Uvh 
从 Yum 存储库下载 RPM

10. 将远程 Yum 存储库同步到本地目录

重新同步密切相关百胜下载器(事实上​​,它们支持几乎相同的选项)但提供了相当大的优势。它将远程存储库同步到本地目录,而不是下载二进制或源 RPM 文件。

让我们同步一下众所周知的到一个名为的子目录epel本地在当前工作目录中:

# man reposync
# mkdir epel-local
# reposync --repoid=epel --download_path=epel-local
将 EPEL 存储库同步到目录

请注意,此过程将需要相当长的时间,因为正在下载8867套餐:

同步远程 Yum 存储库

同步完成后,让我们使用以下命令检查新创建的 EPEL 存储库镜像所使用的磁盘空间量::

# du -sch epel-local/*
检查 Yum 存储库磁盘空间

现在就看你是否想保留这个了温暖的镜像或使用它来安装软件包而不是使用远程软件包。在第一种情况下,请记住您需要修改/etc/yum.repos.d/epel.repo因此。

11. 修复未完成或中止的 Yum 事务

百胜完成交易是一部分yum 工具捕获系统上未完成或中止的 yum 事务并尝试完成它们的程序。

例如,当我们通过以下方式更新 Linux 服务器时包管理器有时会抛出一条警告消息,内容如下:

尚有未完成的交易。您可能会考虑先运行 yum-complete-transaction 来完成它们。

要修复此类警告消息并解决此类问题,百胜完成交易命令进入画面以完成未完成的事务,它会在以下位置找到那些不完整或中止的 yum 事务:全部交易*交易完成*可以在以下位置找到的文件/var/lib/yum目录。

跑步百胜完成交易完成不完整的 yum 事务的命令:

# yum-complete-transaction --cleanup-only

现在,yum 命令将在没有不完整事务警告的情况下运行。

# yum update

笔记:此提示是由我们的一位常客建议的托马斯先生在评论区。

概括

在本文中,我们介绍了通过以下方式提供的一些最有用的实用程序yum 工具。有关完整列表,您可以参考手册页(man yum-utils)。

此外,每个工具都有一个单独的手册页(请参阅人重新同步,例如),如果您想了解有关它们的更多信息,您应该参考该文档的主要来源。

如果您花一点时间查看手册页yum 工具,也许您会发现另一个您希望我们在单独的文章中更深入介绍的工具。如果是这样,或者如果您对本文有疑问、意见或建议,请随时使用下面的评论表给我们留言,让我们知道是哪一个。