Neuspjelo učitavanje metapodataka za repozitorij "AppStream" [CentOS] na CentOS 8
Uvod
Kada pokrenete ažuriranje ili pokušate instalirati paket na CentOS 8, upravitelj paketa može zaustaviti s ovom greškom:
Failed to load metadata for 'AppStream' repo: Cannot prepare internal mirror list: No URLs in mirror list.
Ovo nije mrežni kvar niti privremeni problem s ogledalom. To je očekivani ishod jer je CentOS 8 dosegao kraj svog životnog vijeka. Ovaj članak objašnjava zašto se pogreška javlja, koji je ispravan dugoročni rješenje i kako privremeno vratiti sustav u rad ako vam je i dalje potreban pristup.

Zašto se ova pogreška događa
CentOS Linux 8 dosegao je kraj životnog vijeka 31. prosinca 2021. Nakon tog datuma usluga mirrorlist za CentOS Linux 8 povučena je, a paketi su premješteni na arhivski poslužitelj vault.centos.org.
Datoteke repozitorija na sustavu i dalje upućuju na mirrorlist.centos.org. Budući da ta usluga više ne vraća nikakve URL-ove, popis ogledala vraća se prazan i upravitelj paketa nema adresu s koje bi preuzeo metapodatke. To je poruka koju vidite.
Paketi nisu izbrisani. Premješteni su na arhivski poslužitelj, vault.centos.org. To omogućuje privremeno rješenje u nastavku.
Preporučeno rješenje: migracija na AlmaLinux ili Rocky Linux
Budući da CentOS 8 više ne prima ažuriranja, uključujući sigurnosna ažuriranja, zadržavanje u produkciji predstavlja rizik. Ispravno rješenje je preći na distribuciju koja je binarno kompatibilna sa sustavom koji već koristite.
AlmaLinux i Rocky Linux besplatne su, zajednicom podržane pregradnje sustava Red Hat Enterprise Linux. Dizajnirani su kao izravne zamjene za CentOS, tako da postojeći softver i konfiguracija u većini slučajeva nastavljaju raditi bez promjena. Oba projekta pružaju skriptu za migraciju na licu mjesta koja pretvara CentOS 8 bez ponovne instalacije poslužitelja.
Uvijek napravite potpunu sigurnosnu kopiju ili snimku stanja prije migracije. Konverzija na licu mjesta mijenja temeljne sistemske pakete, stoga želite imati način povratka ako nešto pođe po zlu.
Obje skripte za migraciju zahtijevaju funkcionalan upravitelj paketima za preuzimanje novih paketa. Na sustavu CentOS 8 kojem je završio životni vijek, repozitoriji su neaktivni, stoga prvo primijenite privremeno rješenje u sljedećem odjeljku, a zatim pokrenite migraciju.
Za migraciju na AlmaLinux 8:
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh bash almalinux-deploy.sh

Za migraciju na Rocky Linux 8:
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh bash migrate2rocky.sh -r

Nakon što skripta završi, ponovno pokrenite poslužitelj i potvrdite novi sustav pomoću:
cat /etc/os-release dnf repolist


Ako poslužitelj ne može biti migriran na licu mjesta ili biste radije počeli s čistom instalacijom, postavite novi VPS s već instaliranim AlmaLinuxom ili Rocky Linuxom i premjestite svoje podatke. INTROSERV nudi Linux VPS s tim distribucijama dostupnima prilikom narudžbe.
Privremeno rješenje: usmjerite repozitorije na arhivu
Koristite ovo samo kada vam je sustav potreban da radi na kratko, na primjer za izradu konačne sigurnosne kopije prije migracije ili za održavanje rada nekritične mašine dok se migracija ne dovrši. Time se CentOS 8 ne vraća u podržano stanje i ne vraćaju se ažuriranja.
Prije izvršavanja naredbi u nastavku provjerite točnu verziju vaše instalacije pomoću naredbe cat /etc/centos-release. Ovaj članak koristi 8.5.2111 kao primjer. Zamijenite je verzijom prikazanom na vašem sustavu. Ako navedete pogrešno arhivirano izdanje, DNF može vratiti pogreške 404 jer taj direktorij ne postoji za vašu instalaciju.

Naredbe u nastavku onemogućuju popis mrtvih ogledala i usmjeravaju datoteke repozitorija na poslužitelj arhive vault.centos.org umjesto toga:
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-*
Za razliku od aktivnih repozitorija, arhiva je organizirana u direktorijima za fiksne izdanja, na primjer 8.5.2111. Kao rezultat toga, zadana putanja $releasever više ne vodi do valjanog sadržaja i mora se zamijeniti točnim arhiviranim izdanjem. Ovo se odnosi na sve tri zadane datoteke repozitorija: AppStream, BaseOS i Extras, a ne samo na AppStream.
Nakon izvršavanja gore navedenih naredbi, provjerite svaku datoteku repozitorija pojedinačno umjesto da slijepo vjerujete masovnoj izmjeni, jer je masovna sed naredba na tri datoteke jednostavno mjesto gdje se može neprimijećeno ušuljati netočan znak ili pogrešan razdjelnik.
Provjerite datoteku AppStream:
cat CentOS-Linux-AppStream.repo
Redak baseurl trebao bi glasiti točno ovako, pri čemu direktorij izdanja odgovara vašoj verziji:
baseurl=https://vault.centos.org/8.5.2111/AppStream/x86_64/os/

Provjerite datoteku BaseOS na isti način:
cat CentOS-Linux-BaseOS.repo
I datoteku Extras:
cat CentOS-Linux-Extras.repo
Nakon što su sve tri datoteke potvrđene, očistite predmemoriju i ponovno je izgradite:
dnf clean all dnf makecache dnf repolist

Ako je repozitorij ispravno popravljen, sada preuzima svoje metapodatke bez pogrešaka. Ako jedna datoteka i dalje ima tipfel, dnf izvještava o određenom repozitoriju koji je zakačio, što olakšava povratak i provjeru upravo te datoteke.
Arhiva sadrži posljednje pakete objavljene prije kraja životnog vijeka. Nećete primati novije verzije niti sigurnosne zakrpe. Smatrajte ovo načinom da sustav ostane dostupan dok ne migrirate, a ne trajnim stanjem.
Kako biste potvrdili da se paketi ispravno instaliraju, a ne samo da se učitavaju metapodaci, testirajte s bilo kojim malim paketom:
dnf install -y wget


Nakon što to uspije, pokrenite stvarno ažuriranje:
dnf update -y
Zaključak
Greška u AppStream metapodacima na CentOS 8 znak je da je distribucija dosegla kraj životnog vijeka. Jedino dugoročno rješenje je migracija na podržanu distribuciju kompatibilnu s binarnim formatom, kao što su AlmaLinux ili Rocky Linux, po mogućnosti nakon potpunog sigurnosnog kopiranja. Radna zaobilaznica s vault.centos.org i dalje je korisna, ali samo kao kratkoročno rješenje koje omogućuje da poslužitelj radi dovoljno dugo da se sigurno pređe s CentOS-a 8.