Błąd wczytywania metadanych repozytorium „AppStream" [CentOS] w systemie CentOS 8 | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Błąd wczytywania metadanych repozytorium „AppStream" [CentOS] w systemie CentOS 8

Wprowadzenie

Podczas uruchamiania aktualizacji lub próby zainstalowania pakietu na CentOS 8 menedżer pakietów może zatrzymać się z następującym błędem:

Failed to load metadata for 'AppStream' repo: Cannot prepare internal mirror list: No URLs in mirror list.

Nie jest to usterka sieci ani tymczasowy problem z serwerami mirror. Jest to spodziewany efekt tego, że CentOS 8 osiągnął koniec cyklu życia. Ten artykuł wyjaśnia, dlaczego pojawia się ten błąd, jakie jest właściwe rozwiązanie długoterminowe oraz jak tymczasowo przywrócić działanie systemu, jeśli nadal potrzebujesz do niego dostępu.

Dlaczego pojawia się ten błąd

CentOS Linux 8 osiągnął koniec cyklu życia 31 grudnia 2021 r. Po tej dacie usługa listy serwerów mirror dla CentOS Linux 8 została wycofana, a pakiety przeniesiono na serwer archiwalny vault.centos.org.

Pliki repozytoriów w systemie nadal wskazują na mirrorlist.centos.org. Ponieważ ta usługa nie zwraca już żadnych adresów URL, lista serwerów mirror wraca pusta, a menedżer pakietów nie ma adresu, z którego mógłby pobrać metadane. To właśnie ten komunikat widzisz.

Info

Pakiety nie zostały usunięte. Zostały przeniesione na serwer archiwalny, vault.centos.org. Właśnie to umożliwia zastosowanie tymczasowego rozwiązania opisanego poniżej.

Zalecane rozwiązanie: migracja do AlmaLinux lub Rocky Linux

Ponieważ CentOS 8 nie otrzymuje już żadnych aktualizacji, w tym aktualizacji zabezpieczeń, utrzymywanie go w środowisku produkcyjnym stanowi ryzyko. Właściwym rozwiązaniem jest przejście na dystrybucję binarnie kompatybilną z systemem, który już eksploatujesz.

AlmaLinux i Rocky Linux to darmowe, wspierane przez społeczność odtworzenia Red Hat Enterprise Linux. Zostały zaprojektowane jako bezpośrednie zamienniki CentOS, dzięki czemu istniejące oprogramowanie i konfiguracja w większości przypadków działają dalej bez zmian. Oba projekty udostępniają skrypt migracji in-place, który konwertuje CentOS 8 bez ponownej instalacji serwera.

Warning

Przed migracją zawsze wykonaj pełną kopię zapasową lub migawkę. Konwersja in-place zmienia kluczowe pakiety systemowe, warto więc mieć możliwość powrotu, jeśli coś pójdzie nie tak.

Oba skrypty migracji wymagają działającego menedżera pakietów do pobrania nowych pakietów. W systemie CentOS 8, który osiągnął koniec cyklu życia, repozytoria są martwe, dlatego najpierw zastosuj tymczasowe rozwiązanie opisane w następnej sekcji, a dopiero potem uruchom migrację.

Aby zmigrować do AlmaLinux 8:

curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh bash almalinux-deploy.sh

Aby zmigrować do Rocky Linux 8:

curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh bash migrate2rocky.sh -r

Po zakończeniu działania skryptu uruchom ponownie serwer i potwierdź nowy system za pomocą:

cat /etc/os-release dnf repolist


Tip

Jeśli serwera nie można zmigrować in-place lub wolisz zacząć od czystej instalacji, wdróż nowy VPS z już zainstalowanym AlmaLinux lub Rocky Linux i przenieś tam swoje dane. INTROSERV oferuje VPS z systemem Linux z tymi dystrybucjami dostępnymi już w momencie zamówienia.

Tymczasowe rozwiązanie: przekierowanie repozytoriów do archiwum

Używaj tego rozwiązania tylko wtedy, gdy potrzebujesz, aby system ponownie działał przez krótki czas, na przykład aby wykonać ostatnią kopię zapasową przed migracją lub aby utrzymać działanie niekrytycznej maszyny do czasu ukończenia migracji. Nie sprawia to, że CentOS 8 ponownie staje się wspierany, ani nie przywraca aktualizacji.

Info

Przed uruchomieniem poniższych poleceń sprawdź dokładną wersję swojej instalacji za pomocą cat /etc/centos-release. Ten artykuł jako przykład wykorzystuje wersję 8.5.2111. Zastąp ją wersją zgłoszoną przez Twój własny system. Jeśli podasz nieprawidłową zarchiwizowaną wersję, DNF może zwracać błędy 404, ponieważ taki katalog nie istnieje dla Twojej instalacji.

Poniższe polecenia wyłączają nieaktywną już listę serwerów mirror i kierują pliki repozytoriów zamiast tego na serwer archiwalny vault.centos.org:

cd /etc/yum.repos.d/ sed -i 's/^mirrorlist/#mirrorlist/g' CentOS-* sed -i 's|^#baseurl=.*mirror.centos.org|baseurl=https://vault.centos.org|g' CentOS-* sed -i 's|/$contentdir/$releasever/|/8.5.2111/|g' CentOS-*

Warning

W przeciwieństwie do aktywnych repozytoriów, archiwum jest zorganizowane w oparciu o ustalone katalogi wydań, na przykład 8.5.2111. W rezultacie domyślna ścieżka $releasever nie wskazuje już na prawidłową zawartość i musi zostać zastąpiona dokładną zarchiwizowaną wersją. Dotyczy to wszystkich trzech domyślnych plików repozytoriów: AppStream, BaseOS i Extras, a nie tylko AppStream.

Po uruchomieniu powyższych poleceń zweryfikuj każdy plik repozytorium osobno, zamiast ślepo ufać zbiorczej edycji, ponieważ zbiorcze polecenie sed zastosowane do trzech plików to łatwe miejsce, w którym niezauważenie może wkraść się błędny znak lub niewłaściwy separator.

Sprawdź plik AppStream:

cat CentOS-Linux-AppStream.repo

Linia baseurl powinna wyglądać dokładnie tak, przy czym katalog wydania musi odpowiadać Twojej wersji:

baseurl=https://vault.centos.org/8.5.2111/AppStream/x86_64/os/

Sprawdź w ten sam sposób plik BaseOS:

cat CentOS-Linux-BaseOS.repo

Oraz plik Extras:

cat CentOS-Linux-Extras.repo

Gdy wszystkie trzy pliki zostaną potwierdzone, wyczyść pamięć podręczną i odbuduj ją:

dnf clean all dnf makecache dnf repolist

Jeśli repozytorium zostało poprawnie naprawione, teraz pobiera swoje metadane bez błędów. Jeśli jeden z plików nadal zawiera literówkę, dnf zgłasza konkretne repozytorium, które zawiodło, co ułatwia powrót i sprawdzenie właśnie tego pliku.

Warning

Archiwum zawiera ostatnie pakiety wydane przed końcem cyklu życia. Nie otrzymasz żadnych nowszych wersji ani poprawek bezpieczeństwa. Traktuj to jako sposób na utrzymanie systemu w stanie dostępnym do czasu migracji, a nie jako stan docelowy.

Aby potwierdzić, że pakiety instalują się poprawnie, a nie tylko że ładują się metadane, przetestuj to na dowolnym małym pakiecie:

dnf install -y wget


Gdy to się powiedzie, uruchom właściwą aktualizację:

dnf update -y

Podsumowanie

Błąd metadanych AppStream na CentOS 8 jest sygnałem, że dystrybucja osiągnęła koniec cyklu życia. Jedynym długoterminowym rozwiązaniem jest migracja do wspieranej, binarnie kompatybilnej dystrybucji, takiej jak AlmaLinux lub Rocky Linux, najlepiej po wykonaniu pełnej kopii zapasowej. Obejście z użyciem vault.centos.org pozostaje przydatne, ale wyłącznie jako krótkotrwały most, który pozwala serwerowi działać na tyle długo, by bezpiecznie przejść z CentOS 8.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA