
Группа экземпляров 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