![从一个 repo 中删除已安装的软件包并从 CentOS 重新安装?](https://linux22.com/image/594119/%E4%BB%8E%E4%B8%80%E4%B8%AA%20repo%20%E4%B8%AD%E5%88%A0%E9%99%A4%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%B9%B6%E4%BB%8E%20CentOS%20%E9%87%8D%E6%96%B0%E5%AE%89%E8%A3%85%EF%BC%9F.png)
我有 62 个来自 RPMfusion 的软件包已经覆盖了 CentOS 上游软件包,现在我想恢复到原始的 CentOS 软件包。
我唯一能想到的就是
BAD_PACKAGES="name1 name2 ..."
echo $BAD_PACKAGES |xargs rpm -e --nodeps
echo $BAD_PACKAGES |xargs yum install
但这会导致系统在此过程中处于崩溃状态。
问题
从 CentOS 的 repo 中删除这些软件包然后重新安装的最安全方法是什么?
答案1
你可以升级使用--oldpackage
以下选项升级到旧版本rpm
:
rpm -Uvh --oldpackage package-a.1.23.rpm
这比 安全得多rpm -e --nodeps
。您可以在一个命令中升级多个软件包,这样就不会破坏依赖关系。
答案2
这种方法虽然有效,但很可怕,因为它在此过程中破坏了大量关键服务。
rpm -qa --queryformat "%{NAME}.%{ARCH} %-35{DISTRIBUTION}\n" | grep -i "rpm-fusion" | awk '{print $1}' > /root/list_arch
cat /root/list_arch | xargs rpm -e --nodeps
cat /root/list_arch | xargs yum -y install
list_arch
必须进行一些编辑,因为 rpm-fusion 中的软件包名称与原始 CentOS 软件包名称略有不同。
yum
我获得了安装 rpm-fusion 包的命令的输出,这是一个很大的保险。