Рішення проблеми із репозиторіями CentOS 7

В  2024 році завершився термін підтримки популярної операційної системи CentOS 7, яка у багатьох користувачів та адмінів серверів вважалась стандартом де-факто для використання на своїх фізичних та віртуальних серверах. Епоха CentOS 7 завершилась, і на зміну їй прийшли більш нові ОС.

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

При запуску yum update ми побачили наступне:

#yum update -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"


 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo= ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable 
        or
            subscription-manager repos --disable=

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=.skip_if_unavailable=true

Cannot find a valid baseurl for repo: base/7/x86_64

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

Все, що треба зробити, запустити три команди під користувачем root

sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/CentOS-*.repo

Готово! Тепер ми можемо довстановити будь-які пакети із стандартного репозиторія CentOS 7.