一组 Amazon Linux 2 实例具有不同名称的
name=packages-microsoft-com-prod
重复实例。yum repositories
有什么安全的方法可以删除对同一包的重复引用而不导致同一操作系统中运行的其他内容中断?
以下是用 grep 说明问题的方式:
[user-name@host-name ~]$ sudo grep name=packages-microsoft-com-prod /etc/yum.repos.d/*
/etc/yum.repos.d/microsoft-prod.repo:name=packages-microsoft-com-prod
/etc/yum.repos.d/msprod.repo:name=packages-microsoft-com-prod
该包的两个实例导致实例中的其他程序返回错误,表明它们不知道要使用两个同名包中的哪一个。
我尝试过yum update
,但问题仍然存在。我可以编写一些 bash 脚本来检查重复的名称并删除一个存储库,直到没有重复为止。但我担心删除存储库可能是一种黑客方法,可能会对机器的其他地方造成附带损害。
用户请求:
根据 @JeffSchaller 的评论,我添加以下终端输出来详细说明情况:
[user-name@host-name ~]$ grep -c ^name= /etc/yum.repos.d/microsoft-prod.repo /etc/yum.repos.d/msprod.repo
/etc/yum.repos.d/microsoft-prod.repo:1
/etc/yum.repos.d/msprod.repo:1
[user-name@host-name ~]$ rpm -qf /etc/yum.repos.d/microsoft-prod.repo /etc/yum.repos.d/msprod.repo
packages-microsoft-prod-1.0-1.el7.noarch
file /etc/yum.repos.d/msprod.repo is not owned by any package
[user-name@host-name ~]$ sudo cat /etc/yum.repos.d/microsoft-prod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
[user-name@host-name ~]$ sudo cat /etc/yum.repos.d/msprod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
答案1
鉴于您所演示的情况,我会这样做rm /etc/yum.repos.d/msprod.repo
,因为它是 /etc/yum.repos.d/microsoft-prod.repo 的副本,并且也不属于任何包。
要以编程方式确定文件是否由包拥有,请检查以下返回码rpm
:
if rpm -qf /the/file > /dev/null 2>&1
then
: the file is owned by an RPM
else
: the file is not owned by an RPM
fi