yum + 如何在 linux redhat 上删除未使用的 rpm/补丁

yum + 如何在 linux redhat 上删除未使用的 rpm/补丁

我正在使用 yum 在我的 RedHat Linux 机器上安装补丁更新,

是否可以以不同的方式使用 yum 来卸载未使用的 rpm/补丁?

我的目标是删除不必要的 rpm/补丁,以便在分区中释放一些空间

例子

我发现以下命令可以删除旧的 rpm 内核

 (package-cleanup) from - yum install yum-utils

 package-cleanup --oldkernels --count=1

答案1

当您使用 yum 安装新更新时,原始安装的软件包和二进制文件也会更新。它不会保留它们的多个副本。然而它确实缓存了各种东西。

您可以使用各种yum clean选项来整理一些yum自己的缓存文件。

例如,yum clean packages将删除已下载的缓存包,其他一些选项可能会有所帮助,但通常yum只会在下次执行时重建数据。

man yum将为您提供有关其他清洁选项的信息。

答案2

我建议使用两种方法来确定可以删除哪些包:

  • 对相关的 RedHat 版本进行最小化安装(顺便说一句,您没有提到),并且仅在顶部添加本机预期执行的操作所必需的软件包。
    然后通过名称获取所有软件包的列表(这样您就可以轻松地与稍新/旧版本的软件包进行比较) rpm -qa --qf="%{N} \n" | sort > minimal_install 然后创建您想要“清理”的计算机的备份并删除所有不在列表中的软件包minimal_install经过彻底审查后。

  • 按大小对包进行排序,并尝试删除列表顶部的一些包,以便用最少的包获得最大的磁盘空间节省。通过例如获取列表 rpm -qa --qf '%{size} \t%{name}\n' | sort -n > packages_sorted_by_size

  • 实际上检查什么占用了大部分磁盘空间,可以通过例如轻松检查, du -mx /|sort -rn|head -35如果 /usr 不在列表顶部,那么 rpm 软件包不应该是您优先清理的对象。

答案3

运行“yum update”操作将更新系统上的所有软件包。

具体来说,这意味着:下载新版本 检查新版本的下载。安装/更新新版本 检查新版本的安装

不再安装旧软件包,只安装新软件包。根据您拥有的扩展名,磁盘上可能只有 rpm 文件,“yum clean all”将删除它们以及存储库元数据,这些元数据将在下一次 yum 操作时重新生成。

另外,如果您只对更新 Firefox 感兴趣(例如),您可以发出“yum update firefox”命令,这将限制对 Firefox 的更新以及安装新的 Firefox 更新所需的任何依赖项。

至于前面提到的增量更新,这些是 drpm(增量包),只是您安装的版本中包内容的更改以及应该在 RHEL7/Fedora 上为任何提供它们的存储库启用的更新。 RHEL6 需要安装 yum 插件“presto”才能利用它,同样需要任何支持它的存储库。

答案4

RPM 软件包不包含增量更新(与 Solaris 等相反)。因此,每个软件包都包含升级和全新安装所需的一切。

你打电话时

yum install firefox

并且firefox已经安装,那么 yum 应该拒绝继续,即使有更新的版本可用。您应该致电:

yum upgrade firefox

这将安装新版本的软件包,并自动删除旧的软件包。因此,您的系统上不应保留任何剩余内容。

尽管您可以致电:

yum install http://foo.bar/firefox-40-1.rpm

如果它比当前安装的软件包更新,则 yum 会自动将其转换为yum upgrade命令。

还有一个例外——内核。

yum install kernel

将安装新内核(如果可用),但不会删除旧内核(因此,如果新内核不起作用,您可以启动到旧内核)。事实上,它也适用于其他一些软件包。我将引用以下man页面yum.conf

installonlypkgs提供的软件包列表只应安装,切勿更新。内核尤其属于这一类。默认为 kernel、kernel-bigmem、kernel-enterprise、kernel-smp、kernel-modules、kernel-debug、kernel-unsupported、kernel-source、kernel-devel、kernel-PAE、kernel-PAE-debug。

请注意,因为这些是提供的,而不仅仅是包名称,所以 kernel-devel 也适用于 kernel-debug-devel 等。

installonly_limitinstallonlypkgs列出的同时保持安装的软件包数量。设置为 0 将禁用此功能。默认值为“3”。请注意,此功能曾经位于“installonlyn”插件中,其中此选项通过 tokeep 进行了更改。请注意,从版本 3.2.24 开始,yum 现在将在 yumdb 中查找已安装软件包的 installonly 属性。如果该属性是“保留”,那么它们将永远不会被删除。

因此您最多可以同时安装 3 个内核包。但不是 4,因为 yum 会自动开始删除它们。正如您所说,package-cleanup --oldkernels如果您确实愿意,可以删除旧内核。

不需要对普通包执行任何类似的操作,因为 yum 每次在upgrade事务期间都会执行此操作。

您可以通过运行来验证它:

rpm -q kernel

其中可能会列出 3 个包。尽管

rpm -q httpd

应该只列出一个包。和

rpm -q glibc

可能会在 64 位计算机上列出 2 个软件包 -如果您有一些需要的软件包(例如),则一个x86_64和另一个。i686multilibwine

相关内容