замены зеркал на Yandex в различных Linux-дистрибутивах
Ни для кого ни секрет, что в настоящее время некоторые зарубежные репозитории пакетов стали недоступны для пользователей России. Некоторые дата центры не позволяют обновлять с официальных репозиториев, либо блокировка исходит от самих репозиториев по географической принадлежности. Это создает проблемы при обновлении ОС и установке необходимого программного обеспечения. Лучшим вариантом будет переход на репозитории Yandex. О чем и поговорим.
Преимущества зеркал Yandex
-
Высокая скорость загрузки пакетов для пользователей в России
-
Стабильность работы
-
Актуальность репозиториев
-
Полнота пакетов (включая non-free и contrib)
Для Debian/Ubuntu и производных (APT)
#!/bin/bash # Определяем версию Debian/Ubuntu if [ -f /etc/os-release ]; then . /etc/os-release DIST=$ID VERSION=$VERSION_ID CODENAME=$(echo $VERSION_CODENAME | tr -d '\n') if [ -z "$CODENAME" ]; then case $VERSION in "12") CODENAME="bookworm" ;; "11") CODENAME="bullseye" ;; "10") CODENAME="buster" ;; "9") CODENAME="stretch" ;; "22.04") CODENAME="jammy" ;; "20.04") CODENAME="focal" ;; "18.04") CODENAME="bionic" ;; *) CODENAME="unknown" ;; esac fi if [ "$CODENAME" != "unknown" ]; then echo "Обнаружена система: $DIST $VERSION ($CODENAME)" # Создаем резервную копию текущего sources.list cp /etc/apt/sources.list /etc/apt/sources.list.bak # Записываем новые зеркала if [ "$DIST" = "debian" ]; then echo "deb http://mirror.yandex.ru/debian/ $CODENAME main contrib non-free non-free-firmware deb http://mirror.yandex.ru/debian/ $CODENAME-updates main contrib non-free non-free-firmware deb http://mirror.yandex.ru/debian-security/ $CODENAME-security main contrib non-free non-free-firmware" | tee /etc/apt/sources.list elif [ "$DIST" = "ubuntu" ]; then echo "deb http://mirror.yandex.ru/ubuntu/ $CODENAME main restricted universe multiverse deb http://mirror.yandex.ru/ubuntu/ $CODENAME-updates main restricted universe multiverse deb http://mirror.yandex.ru/ubuntu/ $CODENAME-security main restricted universe multiverse" | tee /etc/apt/sources.list fi # Обновляем список пакетов apt update echo "Зеркала успешно заменены на Yandex!" else echo "Не удалось определить кодовое имя дистрибутива." fi else echo "Не удалось определить дистрибутив." fi
Для CentOS/RHEL/AlmaLinux/Rocky Linux (YUM/DNF)
#!/bin/bash # Определяем дистрибутив if [ -f /etc/redhat-release ]; then echo "Обнаружена RHEL-подобная система" # Создаем резервную копию mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # Для CentOS 7 if grep -q "CentOS Linux 7" /etc/redhat-release; then echo "Устанавливаем зеркала для CentOS 7" cat > /etc/yum.repos.d/yandex.repo <<EOL [base] name=CentOS-\$releasever - Base - Yandex baseurl=http://mirror.yandex.ru/centos/7/os/\$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-\$releasever - Updates - Yandex baseurl=http://mirror.yandex.ru/centos/7/updates/\$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [extras] name=CentOS-\$releasever - Extras - Yandex baseurl=http://mirror.yandex.ru/centos/7/extras/\$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOL # Для CentOS 8 / RHEL 8 / AlmaLinux 8 / Rocky Linux 8 elif grep -q -E "CentOS Linux 8|AlmaLinux|Rocky Linux" /etc/redhat-release; then echo "Устанавливаем зеркала для CentOS 8 / RHEL 8 / AlmaLinux / Rocky Linux" cat > /etc/yum.repos.d/yandex.repo <<EOL [baseos] name=CentOS-\$releasever - BaseOS - Yandex baseurl=http://mirror.yandex.ru/centos/8/BaseOS/\$basearch/os/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [appstream] name=CentOS-\$releasever - AppStream - Yandex baseurl=http://mirror.yandex.ru/centos/8/AppStream/\$basearch/os/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [extras] name=CentOS-\$releasever - Extras - Yandex baseurl=http://mirror.yandex.ru/centos/8/extras/\$basearch/os/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOL fi # Обновляем кеш if command -v dnf &> /dev/null; then dnf makecache else yum makecache fi echo "Зеркала успешно заменены на Yandex!" else echo "Не удалось определить RHEL-подобный дистрибутив." fi
Для Arch Linux (Pacman)
#!/bin/bash if [ -f /etc/arch-release ]; then echo "Обнаружен Arch Linux" # Создаем резервную копию cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak # Устанавливаем зеркало Yandex echo 'Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist # Обновляем базу данных пакетов pacman -Syy echo "Зеркало успешно заменено на Yandex!" else echo "Не удалось определить Arch Linux." fi
Консольные команды (для ввода в консоль без создания скриптов):
Для Debian:
sudo sh -c 'echo "deb http://mirror.yandex.ru/debian/ bookworm main contrib non-free non-free-firmware\ndeb http://mirror.yandex.ru/debian/ bookworm-updates main contrib non-free non-free-firmware\ndeb http://mirror.yandex.ru/debian-security/ bookworm-security main contrib non-free non-free-firmware" > /etc/apt/sources.list && apt update'
Для Ubuntu:
sudo sh -c 'echo "deb http://mirror.yandex.ru/ubuntu/ jammy main restricted universe multiverse\ndeb http://mirror.yandex.ru/ubuntu/ jammy-updates main restricted universe multiverse\ndeb http://mirror.yandex.ru/ubuntu/ jammy-security main restricted universe multiverse" > /etc/apt/sources.list && apt update'
Для CentOS 7:
sudo sh -c 'mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ && echo -e "[base]\nname=CentOS-\$releasever - Base - Yandex\nbaseurl=http://mirror.yandex.ru/centos/7/os/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7\n\n[updates]\nname=CentOS-\$releasever - Updates - Yandex\nbaseurl=http://mirror.yandex.ru/centos/7/updates/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7\n\n[extras]\nname=CentOS-\$releasever - Extras - Yandex\nbaseurl=http://mirror.yandex.ru/centos/7/extras/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/yandex.repo && yum makecache'
Для CentOS 8/RHEL 8/AlmaLinux/Rocky Linux:
sudo sh -c 'mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ && echo -e "[baseos]\nname=CentOS-\$releasever - BaseOS - Yandex\nbaseurl=http://mirror.yandex.ru/centos/8/BaseOS/\$basearch/os/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\n\n[appstream]\nname=CentOS-\$releasever - AppStream - Yandex\nbaseurl=http://mirror.yandex.ru/centos/8/AppStream/\$basearch/os/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\n\n[extras]\nname=CentOS-\$releasever - Extras - Yandex\nbaseurl=http://mirror.yandex.ru/centos/8/extras/\$basearch/os/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial" > /etc/yum.repos.d/yandex.repo && dnf makecache'
Для Arch Linux:
sudo sh -c 'echo "Server = http://mirror.yandex.ru/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist && pacman -Syy'
Универсальная команда с автоматическим определением дистрибутива:
sudo sh -c 'if [ -f /etc/debian_version ]; then echo "deb http://mirror.yandex.ru/debian/ bookworm main contrib non-free non-free-firmware\ndeb http://mirror.yandex.ru/debian/ bookworm-updates main contrib non-free non-free-firmware\ndeb http://mirror.yandex.ru/debian-security/ bookworm-security main contrib non-free non-free-firmware" > /etc/apt/sources.list && apt update; elif [ -f /etc/redhat-release ] && grep -q "CentOS Linux 7" /etc/redhat-release; then mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ && echo -e "[base]\nname=CentOS-\$releasever - Base - Yandex\nbaseurl=http://mirror.yandex.ru/centos/7/os/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7\n\n[updates]\nname=CentOS-\$releasever - Updates - Yandex\nbaseurl=http://mirror.yandex.ru/centos/7/updates/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7\n\n[extras]\nname=CentOS-\$releasever - Extras - Yandex\nbaseurl=http://mirror.yandex.ru/centos/7/extras/\$basearch/\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/yandex.repo && yum makecache; elif [ -f /etc/arch-release ]; then echo "Server = http://mirror.yandex.ru/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist && pacman -Syy; fi'
Некоторые дистрибутивы могут иметь специфические требования:
-
Fedora: В связи с политиками Fedora Project, российские зеркала могут не содержать всех пакетов.
-
openSUSE: Имеет сложную структуру репозиториев, рекомендуется использовать
zypper mr
для изменения приоритетов зеркал. -
Старые версии дистрибутивов: Могут не поддерживаться российскими зеркалами.
Представленные скрипты позволяют быстро и безопасно перевести систему на использование российских зеркал от Yandex, что особенно актуально в текущих условиях ограничения доступа к зарубежным репозиториям. Перед выполнением замены рекомендуется создать резервные копии текущих конфигурационных файлов.
После замены зеркал рекомендуется выполнить полное обновление системы:
-
Для APT:
apt update && apt upgrade -y
-
Для YUM/DNF:
yum update -y
илиdnf upgrade -y
-
Для Pacman:
pacman -Syu