检查反向依赖并使用 rpm -e --test 模拟软件包卸载
在这一步中,你将学习如何检查反向依赖关系并安全地模拟软件包的卸载。虽然 rpm -qR 命令显示软件包「需要」什么(其依赖项),但 rpm -q --whatrequires 显示哪些其他软件包「需要它」(其反向依赖项)。在卸载软件包之前了解这一点极其重要,因为你可能会破坏系统的其他部分。
为了安全地检查卸载软件包的后果,你可以使用 rpm -e --test 命令。-e 标志代表「擦除」(erase),而 --test 标志告诉 RPM 进行模拟运行,而不实际删除任何文件。
让我们先检查一个许多其他软件包都依赖的核心系统软件包。glibc 软件包提供了 GNU C 库,它是 Linux 系统上几乎所有程序的基础。让我们看看哪些软件包需要 glibc。
rpm -q --whatrequires glibc
输出将显示多个依赖于 glibc 的软件包:
glibc-common-2.34-168.el9_6.19.x86_64
glibc-langpack-en-2.34-168.el9_6.19.x86_64
libstdc++-11.5.0-5.el9_5.x86_64
glibc-headers-2.34-168.el9_6.19.x86_64
pam-1.5.1-23.el9.x86_64
glibc-devel-2.34-168.el9_6.19.x86_64
nscd-2.34-168.el9_6.19.x86_64
如你所见,许多关键的系统软件包都依赖于 glibc。现在让我们看看尝试卸载 glibc 时会发生什么。我们将使用 --test 标志以确保不会真的卸载它,否则会破坏整个系统。
sudo rpm -e --test glibc
由于非常多的软件包需要 glibc,RPM 将报告依赖错误并阻止卸载。输出将显示一长串失败的依赖项:
error: Failed dependencies:
glibc = 2.34-168.el9_6.19 is needed by (installed) glibc-common-2.34-168.el9_6.19.x86_64
glibc = 2.34-168.el9_6.19 is needed by (installed) glibc-langpack-en-2.34-168.el9_6.19.x86_64
glibc >= 2.34 is needed by (installed) libstdc++-11.5.0-5.el9_5.x86_64
... (additional dependency errors)
现在让我们看一个依赖项较少的软件包。我们之前安装的 lsscsi 软件包是一个实用工具包,其反向依赖项较少。让我们检查谁需要它:
rpm -q --whatrequires lsscsi
你应该会看到表示没有软件包需要 lsscsi 的输出:
no package requires lsscsi
既然没有软件包依赖于 lsscsi,我们可以安全地模拟它的卸载:
sudo rpm -e --test lsscsi
该命令应该在没有错误的情况下完成,这表明卸载 lsscsi 不会破坏系统上的任何其他软件包。
这演示了你如何通过先检查反向依赖关系来预测卸载软件包的影响,从而避免破坏系统。