有没有办法识别 Centos/RHEL 中未使用的存储库?
我在 Centos 机器上安装了相当多的存储库,但我不确定哪些是实际需要的,哪些不是。
有没有一种好方法可以生成使用已安装的软件包列表并识别哪些存储库仍在使用以及哪些没有使用的报告?
答案1
如果你在操作系统6,以下命令应该显示您安装的 RPM 来自哪个存储库:
rpm -qa | xargs yum info | grep '^From repo' | sort | uniq -c | sort -rn
如果你在CentOS 5或更低,没有 100% 确定的方法来获取您想要的信息。您将必须检查当前安装的 RPM 并尝试将它们与您设置的各种存储库关联起来。有几种方法可以将它们关联起来:
一些存储库,例如 repoforge/rpmforge 和 IUS,但它们的 RPM 上有后缀,您可以用类似的东西来 grep 出来
rpm -qa release='*rf*'
将打包者、构建主机、签名或供应商与各种存储库相关联。例如,如果构建主机中有“fedoraproject.org”,则它可能来自 EPEL 存储库。或者,如果供应商被列为“RPM Fusion”,那么它可能来自 rpmfusion 存储库。如果每个存储库实际使用这些字段以及他们在其中放入的内容,那么它们在术语上都是不同的。
理论上,打包者、构建主机和供应商都可以被欺骗,因此根据您的安全需求,您可能不想依赖它们,但有人恶意这样做的可能性很低。签名将是最安全的。
回购协议如下。您将查询所有 rpm 并使用类似的内容对输出进行排序
rpm -qa --queryformat '%{vendor}\t%{name}\n' | sort
- 打包者 - %{打包者}
- 构建主机——%{buildhost}
- 签名 - %{RSAHEADER:pgpsig}
- 供应商 - %{供应商}
这CentOS wiki 上的条目可能有帮助。
答案2
找出哪个存储库。软件包安装完毕后您可以执行以下操作:
repoquery --installed --qf '%{ui_nevra} %{ui_from_repo}' -a
...或者,总结一下:
repoquery --installed --qf '%{ui_from_repo}' -a | sort | uniq -c
...如果您删除“--installed”开关,它将告诉您哪个存储库。拥有最新版本的软件包(因此,如果 repos.foo 和 bar 提供 XYZ,则仅列出提供最新版本的软件包)。这可能更接近你想要的。作为更快的检查,另一件事是“yum repolist”将为您提供每个存储库中可用软件包数量的计数。 ...这可能足以证明它们是否值得。