Помилка метаданих AppStream у CentOS 8: як виправити | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
Ex. VAT Ex. VAT 0%

Як виправити помилку метаданих репозиторію AppStream у CentOS 8

Вступ

Коли ви запускаєте оновлення або намагаєтеся встановити пакет на CentOS 8, менеджер пакетів може зупинитися з такою помилкою:

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

Це не мережевий збій і не тимчасова проблема з дзеркалом. Це очікуваний наслідок того, що CentOS 8 досягла кінця життєвого циклу. У цій статті пояснюється, чому виникає помилка, яке рішення є правильним у довгостроковій перспективі та як тимчасово повернути систему в робочий стан, якщо доступ до неї все ще потрібен.

Чому виникає ця помилка

CentOS Linux 8 досягла кінця життєвого циклу 31 грудня 2021 року. Після цієї дати службу списку дзеркал для CentOS Linux 8 було відключено, а пакети перенесено на архівний сервер vault.centos.org.

Файли репозиторіїв у системі й досі посилаються на mirrorlist.centos.org. Оскільки ця служба більше не повертає жодних URL, список дзеркал приходить порожнім, і менеджеру пакетів немає звідки завантажувати метадані. Саме це повідомлення ви й бачите.

Info

Пакети не було видалено. Їх перенесено на архівний сервер vault.centos.org. Саме це робить можливим тимчасове рішення, описане нижче.

Рекомендоване рішення: міграція на AlmaLinux або Rocky Linux

Оскільки CentOS 8 більше не отримує жодних оновлень, включно з оновленнями безпеки, тримати її у продакшені ризиковано. Правильне рішення це перехід на дистрибутив, бінарно сумісний із тією системою, яку ви вже використовуєте.

AlmaLinux та Rocky Linux це безкоштовні, підтримувані спільнотою збірки на основі Red Hat Enterprise Linux. Вони розроблені як пряма заміна CentOS, тож наявне ПЗ і конфігурація у більшості випадків продовжують працювати без змін. Обидва проєкти надають скрипт міграції на місці, який перетворює CentOS 8 без перевстановлення сервера.

Warning

Завжди робіть повну резервну копію або снапшот перед міграцією. Перетворення на місці змінює ключові системні пакети, і вам потрібен шлях назад на випадок, якщо щось піде не так.

Обидва скрипти міграції потребують робочого менеджера пакетів для завантаження нових пакетів. На системі CentOS 8, що досягла кінця життєвого циклу, репозиторії мертві, тож спочатку застосуйте тимчасове рішення з наступного розділу, а потім запускайте міграцію.

Для міграції на AlmaLinux 8:

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

Для міграції на Rocky Linux 8:

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

Після завершення скрипта перезавантажте сервер і підтвердіть нову систему командами:

cat /etc/os-release dnf repolist


Tip

Якщо сервер не можна мігрувати на місці, або ви волієте почати з чистого аркуша, розгорніть новий VPS із уже встановленим AlmaLinux або Rocky Linux і перенесіть дані. INTROSERV пропонує Linux VPS із цими дистрибутивами, доступними під час замовлення.

Тимчасове рішення: перенаправлення репозиторіїв на архів

Використовуйте це лише тоді, коли систему потрібно ненадовго повернути в робочий стан, наприклад щоб зробити фінальну резервну копію перед міграцією або щоб підтримати некритичну машину до завершення міграції. Це не робить CentOS 8 знову підтримуваною і не повертає оновлення.

Info

Перед запуском команд нижче перевірте точну версію вашої встановленої системи командою cat /etc/centos-release. У цій статті як приклад використовується 8.5.2111. Замініть її на версію, яку повідомляє ваша система. Якщо вказати неправильний архівний реліз, DNF може повертати помилки 404, тому що такого каталогу для вашої встановленої системи не існує.

Команди нижче вимикають мертвий список дзеркал і перенаправляють файли репозиторіїв на архівний сервер 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

На відміну від робочих репозиторіїв, архів організований за фіксованими каталогами релізів, наприклад 8.5.2111. Через це шлях за замовчуванням $releasever більше не вказує на дійсний вміст і має бути замінений точним архівним релізом. Це стосується всіх трьох файлів репозиторіїв за замовчуванням, AppStream, BaseOS та Extras, а не лише AppStream.

Після виконання команд вище перевірте кожен файл репозиторію окремо, а не довіряйте пакетному редагуванню наосліп, оскільки масовий sed по трьох файлах це легке місце, де непомітно може проскочити зайвий символ або неправильний роздільник.

Перевірте файл AppStream:

cat CentOS-Linux-AppStream.repo

Рядок baseurl має виглядати точно так, з каталогом релізу, що відповідає вашій версії:

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

Перевірте файл BaseOS тим самим способом:

cat CentOS-Linux-BaseOS.repo

І файл Extras:

cat CentOS-Linux-Extras.repo

Коли всі три файли підтверджено, очистіть кеш і перезберіть його:

dnf clean all dnf makecache dnf repolist

Якщо репозиторій виправлено правильно, він тепер завантажує свої метадані без помилок. Якщо в якомусь файлі залишилася помилка, dnf повідомить, який саме репозиторій не вдалося завантажити, і це дозволить легко повернутися і перевірити лише цей файл.

Warning

Архів містить останні пакети, випущені до кінця життєвого циклу. Ви не отримаєте новіших версій або патчів безпеки. Розглядайте це як спосіб зберегти доступ до системи до міграції, а не як постійний стан.

Щоб переконатися, що пакети встановлюються коректно, а не лише що завантажуються метадані, перевірте на будь-якому невеликому пакеті:

dnf install -y wget


Після успішного виконання запустіть саме оновлення:

dnf update -y

Висновок

Помилка метаданих AppStream на CentOS 8 це ознака того, що дистрибутив досяг кінця життєвого циклу. Єдине довгострокове рішення це міграція на підтримуваний, бінарно сумісний дистрибутив, такий як AlmaLinux або Rocky Linux, бажано після повної резервної копії. Обхідний шлях через vault.centos.org все ще корисний, але лише як короткий міст, який дозволяє серверу пропрацювати достатньо довго, щоб безпечно піти з 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