В статье разберём:
- как подготовить сервер к обновлению (резервный доступ, сеть, время);
- как определить дистрибутив и доступный пакетный менеджер (
apt/dnf/yum); - чем отличаются
update/upgrade/dist-upgradeиdnf upgrade; - как установить «джентльменский набор» утилит для администрирования;
- типовые ошибки при обновлении и как их исправить.
Что понадобится
-
Доступ по SSH: IP-адрес, логин
rootили пользователь сsudo. Желательно иметь доступ к веб-консоли (VNC/Web Console) в панели хостинга на случай потери SSH. -
Чистый терминал на Windows (PowerShell) или Linux/macOS. Проверим, что SSH-клиент установлен:
ssh -V ssh -hЕсли команда не найдена: на Windows включите «OpenSSH Client» в дополнительных компонентах, на Linux/macOS SSH-клиент обычно предустановлен.
Подготовка перед обновлением
-
Откройте второй канал доступа. Запустите второе окно SSH, чтобы при ошибке перезапуска службы/сети вы могли быстро откатиться. На Windows просто откройте ещё один PowerShell и подключитесь теми же реквизитами.
-
Проверьте сетевое соединение и DNS. Обновление требует доступа к зеркалам репозиториев.
# Быстрая проверка IP-соединения ping -c 1 1.1.1.1 || ping -c 1 8.8.8.8 # Проверка DNS-резолвинга доменных имён ping -c 1 deb.debian.org || echo "Проблема с DNS?" curl -I https://archive.ubuntu.com || echo "Нет доступа к HTTPS?" # Дополнительно (systemd-resolved): resolvectl status | sed -n '1,60p' cat /etc/resolv.conf | sed -n '1,60p'Типовые ошибки и решения:
-
Temporary failure in name resolution / Name or service not known — некорректный DNS.
# Временно укажем публичный DNS (systemd-resolved): sudo bash -c 'printf "[Resolve]\nDNS=1.1.1.1 8.8.8.8\nFallbackDNS=9.9.9.9\n" > /etc/systemd/resolved.conf.d/dns.conf' sudo systemctl restart systemd-resolved # Без resolved: пропишите nameserver в /etc/resolv.conf (только если он не символическая ссылка): sudo sed -i '1inameserver 1.1.1.1' /etc/resolv.conf -
curl: (60) SSL certificate problem — неверное время/дата ломают TLS-проверку.
timedatectl status sudo timedatectl set-ntp true # Если NTP выключен или часовой пояс неверный: sudo timedatectl set-timezone UTC && sudo timedatectl set-ntp true
-
-
Сделайте снимок (snapshot) диска в панели провайдера, если сервер продуктивный. Это безопасная точка отката в случае конфликта пакетов или kernel-обновления.
-
Проверьте привилегии. Должен работать
sudo:sudo -v || echo "Нет sudo? Выполните вход под root: su -"Если «sudo: command not found»: войдите под
root(su -) и установитеsudoпакетным менеджером вашей системы (ниже определим какой).
Определяем дистрибутив и пакетный менеджер
Нужно понять, что у вас: Debian/Ubuntu (apt) или RHEL-совместимая система (dnf/yum). Универсальные способы:
# Основной паспорт системы
cat /etc/os-release
# Ядро (полезно при крупных апгрейдах)
uname -r
# Что из менеджеров доступно:
command -v apt && echo "Используем apt"
command -v dnf && echo "Используем dnf"
command -v yum && echo "Используем yum"
Примеры идентификации:
-
Debian/Ubuntu: в
/etc/os-releaseполяID=debianилиID=ubuntu. Менеджер —apt. -
Rocky/AlmaLinux/CentOS Stream:
ID_LIKE="rhel fedora", менеджер —dnf(на старых — может бытьyum, который является совместимым фронтом к dnf). -
Amazon Linux: версии 2/2023 —
dnf/yum(зависит от поколения); смотрите/etc/os-release.
Частые ошибки и как их починить:
-
lsb_release: command not found — на минимальных образах утилиты LSB отсутствуют. Это не критично, используйте
/etc/os-release. При желании установите:# Debian/Ubuntu: sudo apt update sudo apt install -y lsb-release # RHEL-семейство: sudo dnf install -y redhat-lsb-core || sudo yum install -y redhat-lsb-core -
apt: command not found — вы не на Debian/Ubuntu. Используйте
dnfилиyum. -
dnf: command not found, но есть yum — используйте
yum. На очень минимальных образах может встречатьсяmicrodnf:command -v microdnf && echo "Доступен microdnf (OCI-минимальные образы)" -
sudo: command not found — войдите под
root(su -) и установите пакетsudoсоответствующим менеджером:# Примеры: apt update && apt install -y sudo dnf install -y sudo yum install -y sudo
Обновление системы через apt (Ubuntu/Debian)
Если у вас Ubuntu или Debian, используем apt для обновления пакетов. Всегда выполняйте сначала update (обновление индекса пакетов), затем upgrade или full-upgrade.
# Обновляем список пакетов
sudo apt update
# Устанавливаем доступные обновления (без удаления пакетов)
sudo apt upgrade -y
# Полное обновление (может обновить ядро и заменить пакеты)
sudo apt full-upgrade -y
Разбор команд:
-
apt update— синхронизирует список пакетов с репозиториями. -
apt upgrade— обновляет только те пакеты, которые можно заменить без удаления других. -
apt full-upgrade— более глубокое обновление, может удалить или заменить пакеты, включая ядро. Используйте осторожно на продакшн-серверах.
Типовые ошибки и решения
-
«Could not resolve» / «Temporary failure in name resolution» — нет доступа к DNS или интернету. Проверьте сеть:
ping -c 1 google.com || ping -c 1 8.8.8.8Если IP пингуется, но домены — нет, значит проблема с
/etc/resolv.confили DNS. -
«dpkg was interrupted» — прерванная установка пакетов.
sudo dpkg --configure -a -
«Unable to acquire dpkg frontend lock» — уже запущен другой процесс apt/dpkg.
ps aux | grep apt sudo kill -9 PID_процесса sudo rm /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock /var/cache/apt/archives/lockПосле этого повторите
sudo apt update. -
«The following packages have been kept back» — пакеты не обновлены, так как требуют зависимостей. Используйте:
sudo apt full-upgrade -
«404 Not Found [IP: …]» — репозиторий недоступен или устарел.
Проверьте содержимое
/etc/apt/sources.listи замените зеркала на актуальные (для старых Ubuntu/Debian используйте архивные репозиторииold-releases).
Совет: после обновления ядра перезагрузите сервер, чтобы изменения вступили в силу:
sudo reboot
Обновление системы через dnf / yum (CentOS, Rocky, AlmaLinux)
На серверах RHEL-семейства (CentOS Stream, Rocky, AlmaLinux, Amazon Linux) используется dnf или yum. В новых версиях yum является просто алиасом к dnf, поэтому команды практически идентичны.
# Проверим версию пакетного менеджера
dnf --version || yum --version
# Обновляем список пакетов и устанавливаем обновления
sudo dnf upgrade -y
# или
sudo yum update -y
Разбор:
-
dnf upgrade— обновляет все пакеты до последних версий, включая ядро. -
yum update— в старых системах выполняет ту же функцию. На CentOS 7/8 лучше использоватьyum, на новых —dnf.
Типичные ошибки и решения
-
«Another app is currently holding the yum lock» — менеджер пакетов уже используется.
sudo lsof /var/run/yum.pid sudo kill -9 PID_процесса sudo rm -f /var/run/yum.pid -
«Failed to download metadata» — проблема с репозиторием.
# Очистите кеш и попробуйте снова sudo dnf clean all sudo dnf makecache sudo dnf upgrade -yЕсли не помогает — отключите проблемный репозиторий в
/etc/yum.repos.d/*.repo. -
«Error: rpmdb open failed» — повреждена база RPM.
sudo rpm --rebuilddb sudo dnf clean all sudo dnf upgrade -y -
«No space left on device» — закончился диск, чаще всего раздел
/boot.# Удалите старые ядра (аккуратно!) sudo dnf remove kernel-old # или почистите вручную: sudo dnf autoremove
Совет: после обновления ядра и системных библиотек также выполните sudo reboot, чтобы сервер загрузился с новой версии.
Установка базовых утилит
После обновления системы стоит установить минимальный набор инструментов, которые пригодятся почти на каждом сервере. Это ускорит диагностику и сделает администрирование удобнее.
Ubuntu/Debian (apt)
sudo apt update
sudo apt install -y curl wget git htop net-tools unzip zip tar vim nano lsof ufw
CentOS/Rocky/AlmaLinux (dnf/yum)
sudo dnf install -y curl wget git htop net-tools unzip zip tar vim nano lsof firewalld
# или для старых версий
sudo yum install -y curl wget git htop net-tools unzip zip tar vim nano lsof firewalld
Что это за пакеты:
-
curl, wget — загрузка файлов и проверка доступности сайтов/портов.
-
git — управление репозиториями, часто нужно для деплоя проектов.
-
htop — удобный монитор ресурсов в реальном времени.
-
net-tools — старые, но полезные утилиты (ifconfig, netstat).
-
unzip, zip, tar — работа с архивами.
-
vim, nano — редакторы для работы с конфигурациями.
-
lsof — показывает, какие процессы используют файлы или порты.
-
ufw (Ubuntu/Debian) или firewalld (RHEL) — управление фаерволом.
Типовые ошибки и решения
-
«E: Unable to locate package …» — пакет не найден.
Возможные причины:
- не выполнен
sudo apt updateперед установкой; - пакет недоступен в стандартных репозиториях (например,
net-toolsв новых версиях Ubuntu).
- не выполнен
-
«No match for argument» (dnf/yum) — аналогичная ошибка, пакет отсутствует.
Решение: включите репозиторий EPEL:
sudo dnf install -y epel-release sudo dnf install -y htop -
«Disk full» — не хватает места на разделе
/или/var.df -h sudo du -sh /var/cache/dnf/* sudo dnf clean all sudo apt clean
Типичные ошибки при обновлении и их решения
При обновлении системы через apt, dnf или yum иногда возникают ошибки. Рассмотрим наиболее частые и способы их устранения.
Ubuntu/Debian (apt/dpkg)
-
Ошибка блокировки dpkg/apt:
E: Could not get lock /var/lib/dpkg/lock-frontend E: Unable to acquire the dpkg frontend lockПричина — другой процесс уже использует apt (например, автоматическое обновление). Решение:
ps aux | grep apt sudo kill -9 PID_процесса sudo rm /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock /var/cache/apt/archives/lock sudo dpkg --configure -a -
Повреждённая база dpkg:
dpkg: error: dpkg status database is locked by another processПроверьте, что нет зависших процессов, затем пересоберите:
sudo dpkg --configure -a sudo apt install -f -
Ошибки зависимостей:
The following packages have unmet dependencies...Решение:
sudo apt --fix-broken install sudo apt full-upgrade -
404 Not Found при обновлении — репозиторий устарел.
Замените зеркала в
/etc/apt/sources.listили используйтеold-releasesдля старых систем.
CentOS/Rocky/AlmaLinux (dnf/yum)
-
Блокировка yum/dnf:
Another app is currently holding the yum lockЗавершите процесс:
sudo lsof /var/run/yum.pid sudo kill -9 PID_процесса sudo rm -f /var/run/yum.pid -
Ошибка базы RPM:
rpmdb: BDB0113 Thread/process ... failed: BDB1507 Thread died in Berkeley DB library Error: rpmdb open failedПересоберите базу:
sudo rm -f /var/lib/rpm/__db* sudo rpm --rebuilddb sudo dnf clean all -
Проблемы с репозиториями:
Failed to download metadata for repo 'appstream'Очистите кеш и создайте заново:
sudo dnf clean all sudo dnf makecache -
Недостаточно места (особенно на разделе
/boot):No space left on deviceРешение — удалите старые ядра:
sudo dnf remove --oldinstallonly kernel sudo dnf autoremove
Итоги
-
Мы подготовили сервер к обновлению: проверили сеть, DNS и доступ по SSH.
-
Определили дистрибутив и выбрали подходящий пакетный менеджер (
apt,dnfилиyum). -
Обновили систему и ядро, устранили типичные ошибки (lock dpkg, rpmdb, зависшие процессы).
-
Установили базовый набор утилит (
curl,wget,htop,git,nano,lsof,ufw/firewalld). -
Разобрали частые проблемы и способы их решения.
Дальнейшие шаги: настройка фаервола, создание пользователя вместо root, включение fail2ban и резервного копирования.