我正在使用 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_limit
installonlypkgs
列出的同时保持安装的软件包数量。设置为 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
和另一个。i686
multilib
wine