Server Migration Center (SMC), /etc/yum.repos.d/ dizinindeki birden fazla .repo dosyası aynı depo tanımlayıcısını (repo ID) paylaştığında "A YUM/DNF repository defined multiple times" hatasını bildirir. Yinelenen repo ID'leri paket yöneticisinin hangi depoyu kullanacağını belirlemesini engeller ve geçiş işlerinin başarısız olmasına neden olur.
Arka Plan
/etc/yum.repos.d/ dizinindeki her bir .repo dosyası bir veya daha fazla YUM ya da DNF deposu tanımlar. Repo ID'si, her depo bölümünün başındaki köşeli parantezler içindeki etikettir; örneğin [base], [extras] veya [updates]. Repo ID'leri tüm .repo dosyaları arasında benzersiz olmalıdır. İki veya daha fazla dosya aynı repo ID'sini tanımlarsa paket yöneticisi hangi depoyu kullanacağını çözümleyemez ve SMC bu hatayı raporlar.
Çözüm
1. Adım: Örneğe bağlanın
İşletim sistemini geçirmek istediğiniz Elastic Compute Service (ECS) örneğine bağlanın. Ayrıntılar için bkz. Parola veya anahtar kullanarak Linux örneğine bağlanma.
2. Adım: Yinelenen repo ID'lerini bulun
Tüm .repo dosyalarındaki yinelenen repo ID'lerini listelemek için aşağıdaki komutu çalıştırın:
grep -h '^\[' /etc/yum.repos.d/*.repo | sort | uniq -d
Bu komut, her bir .repo dosyasındaki tüm repo ID'lerini ([ ile başlayan satırlar) ayıklar, sıralar ve yalnızca yinelemeleri yazdırır.
Belirli bir yinelenen repo ID'sini hangi dosyaların içerdiğini belirlemek için aşağıdaki komutu çalıştırın ve [base] ifadesini ilgili yinelenen repo ID'siyle değiştirin:
grep "\[base\]" /etc/yum.repos.d/*.repo
Örnek çıktı:
/etc/yum.repos.d/CentOS-7.repo:[base]
/etc/yum.repos.d/CentOS-Base.repo:[base]
Bu örnekte hem CentOS-7.repo hem de CentOS-Base.repo dosyaları [base] repo ID'sini tanımlamaktadır.
3. Adım: Yinelemeleri kaldırın
Her bir yinelenen öğe için durumunuza uygun seçeneği belirleyin.
Seçenek A: Gereksiz dosyayı kaldırın (önerilir)
Bir .repo dosyası güncel değilse veya gereksizse yedekleyip kaldırın:
mv /etc/yum.repos.d/CentOS-7.repo /etc/yum.repos.d/CentOS-7.repo.bak
Seçenek B: Repo ID'sini yeniden adlandırın
Her iki depoya da ihtiyaç duyuluyorsa bir dosyadaki repo ID'sini yeniden adlandırarak her deponun benzersiz bir tanımlayıcıya sahip olmasını sağlayın:
# Before
[base]
# After
[base-alt]
Birden fazla repo ID'si yineleniyorsa (örneğin[base],[extras]ve[updates]), her birini çözün. 2. Adımdaki komutu yeniden çalıştırarak yinelenen öğe kalmadığını doğrulayın.
4. Adım: Geçiş işlemini yeniden deneyin
Tüm yinelemeleri çözdükten sonra SMC istemcisini çalıştırın ve geçiş işini yeniden deneyin. Ayrıntılar için bkz. SMC istemcisini çalıştırma.