我知道这yum clean all
不一定会清除所有包文件。我从“ Maybe you want: rm -rf /var/cache/yum ”知道我可能不得不,天哪,直截了当地清除所有. /var/cache/yum
但是我刚刚发现我绝对不想清除所有的/var/cache/yum
,因为显然安装了哪些软件包的记录也保存在某处。中没有某些文件/var/cache/yum
,rpm -qa
似乎什么也不打印。
那么是否有一个简单的规则/var/cache/yum
可以手动删除下面的其他文件,通过删除不需要的包文件(或可以轻松重新下载)来节省空间,但保留系统的安装状态?
有可能我在这里的一个或多个假设完全错误。如有欢迎指正。
更新:我在这里跳过了一些细节,但是将所有内容/var/cache/yum
从拥有它的系统复制到没有修复的系统rpm -qa
(它仍然没有打印任何东西),所以看起来我的假设之一是有缺陷的,并且系统的安装状态保存在/var
除/var/cache/yum
.
更新 2:我的一个假设是错误的。正如我最终发现的那样,正如@shodanshok 在回答中指出的那样,当前安装的软件包数据库位于/var/lib/rpm
,而不是 /var/cache/yum
. 所以清除所有/var/cache/yum
应该是安全的。
跑步
yum clean all
通常足以满足所有意图和目的,因为它只会留下很少的已用空间。例外情况是您在运行前yum clean all
禁用了一个回购协议,禁止yum
清除该回购协议缓存。无论如何,删除
/var/cache/yum
应该没有坏影响,特别是因为 RPM 数据库位于/var/lib/rpm
而不是/var/cache
.根本没有安装 rpm 软件包的 Red Hat box 坏了。
首先,确认这是一台应该有真实 rpm 数据库的主机。不是一些奇怪的容器或 chroot 或其他精简的东西。确定系统是否应该在 之前获得更新
yum update
。并检查yum history
是否记录了最近的 yum 命令。yum 不会自己进入这种状态,它会拒绝删除受保护的包。拥有功能正常的系统,但在 rpm 查询中没有任何内容,意味着有人对 rpm 做了一些非常不安全的事情。例如删除 rpm 数据库而不删除包。清理起来真是一团糟。如前所述,删除 yum 缓存不会这样做。
考虑从安装程序重新安装新主机。恢复数据。这种干净启动的优势包括从已知良好的 rpm 系统开始。也许你可以借此机会进行主要的软件升级。
或者,可以从损坏的 rpm 数据库中恢复。假设任何数据库仍然存在。仅当您无法从备份中恢复时才执行此操作,并了解您的 rpm 使用的是哪个数据库后端。在尝试之前备份主机,包括 rpm db。如果对其包数据库进行手术比重新安装更容易,则主机需要对您有一定的价值。