Подробный гайд: Откат обновления системы ALT Linux через Live CD - Часть 2
9. Варианты отката
Вариант 1. Откат конкретного пакета через apt
Если в репозитории ещё доступна старая версия пакета, можно установить её.
Сначала посмотрите доступные версии:
apt-cache policy <имя_пакета>
Например:
apt-cache policy firefox
Если старая версия видна, ставьте её:
apt-get install <имя_пакета>=<старая_версия>
Пример:
apt-get install firefox=128.1.0-alt1
Или, в зависимости от версии apt, может сработать запись через дефис:
apt-get install firefox-128.1.0-alt1
Несколько пакетов:
apt-get install libfoo=1.2-alt1 bar=2.0-alt2
Если apt ругается на downgrade, можно попробовать, если ваша версия это поддерживает:
apt-get install --allow-downgrades <имя_пакета>=<старая_версия>
Вариант 2. Откат через старый .rpm-файл
Часто в репозитории уже нет старой версии. Тогда нужен старый .rpm-файл.
Где взять:
- на другой машине с той же версией системы;
- в архиве репозитория вашей ветки;
- на установочном образе нужной версии;
- в локальном зеркале, если оно есть;
- в
/var/cache/apt/archives, если старый пакет там случайно остался.
Проверить кэш:
find /var/cache/apt/archives -name '*.rpm'
Если файл есть, положите его, например, в /root.
Проверьте пакет:
rpm -qp --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' /root/package.rpm
Откат:
rpm -Uvh --oldpackage /root/package.rpm
Несколько пакетов лучше ставить одной транзакцией:
rpm -Uvh --oldpackage /root/pkg1.rpm /root/pkg2.rpm /root/pkg3.rpm
Не используйте --nodeps, если в этом нет крайней необходимости. Если зависимости сломаны, сначала откатите и зависимости.
После rpm можно поправить зависимости:
apt-get install -f
Вариант 3. Удаление пакета, который был установлен при обновлении
Если пакет не обновлялся, а именно устанавливался как новый и ломает систему, его можно удалить:
apt-get remove <имя_пакета>
Но будьте осторожны: если это системный пакет, удаление может потянуть за собой удаление важных компонентов.
Сначала проверьте зависимости:
apt-get remove --simulate <имя_пакета>
Вариант 4. Откат конфигурационных файлов
Иногда проблема не в пакетах, а в изменённых конфигах.
При обновлении rpm создаёт файлы:
*.rpmnew
*.rpmsave
Найти их:
find /etc -name '*.rpmnew' 2>/dev/null
find /etc -name '*.rpmsave' 2>/dev/null
Обычно:
.rpmnew— новый конфиг из пакета, старый остался;.rpmsave— старый конфиг сохранён, новый установлен вместо него.
Сравните файлы и верните нужный вариант вручную.
Например:
diff -u /etc/foobar.conf.rpmsave /etc/foobar.conf
После изменений перезапустите службу, если система грузится, или просто перезагрузитесь после исправлений.
10. Если система не грузится после обновления ядра
Это очень частый случай.
10.1. Попробуйте загрузиться со старым ядром
В меню GRUB попробуйте выбрать предыдущее ядро.
Если меню не видно, при включении можно попробовать удерживать:
Shiftдля BIOS/GRUB;Escдля некоторых вариантов.
Если старое ядро загружается, можно временно работать на нём, а новое проблемное ядро удалить или откатить.
10.2. Посмотрите установленные ядра
В chroot:
rpm -qa | grep kernel
Пример:
kernel-image-std-def-...
kernel-modules-std-def-...
Или:
rpm -qa | grep -E 'kernel-(image|std|un|server)'
Посмотрите содержимое /boot:
ls -l /boot
Там должны быть:
vmlinuz-*
initrd-*
10.3. Переустановка ядра
Если нужно переустановить текущий пакет ядра, найдите его точное имя через:
rpm -qa | grep kernel
Затем:
apt-get install --reinstall <имя_пакета_ядра>
Например, условно:
apt-get install --reinstall kernel-image-std-def
Если нужен конкретный старый пакет ядра, лучше установить старый .rpm через:
rpm -Uvh --oldpackage /root/kernel-*.rpm
или через apt, если старая версия доступна.
10.4. Восстановление GRUB
Проверьте режим загрузки:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Для BIOS
Установите GRUB на диск, не на раздел:
grub-install /dev/sda
Обновите конфигурацию:
grub-mkconfig -o /boot/grub/grub.cfg
Если в системе команда называется grub2-mkconfig, используйте:
grub2-mkconfig -o /boot/grub/grub.cfg
Для UEFI
Убедитесь, что смонтирован EFI-раздел:
mount | grep /boot/efi
Затем:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ALT
Обновите конфигурацию:
grub-mkconfig -o /boot/grub/grub.cfg
Если используется grub2-mkconfig:
grub2-mkconfig -o /boot/grub/grub.cfg
Если не хватает пакетов, можно установить:
apt-get update
apt-get install grub-efi efibootmgr
11. Если сломался графический режим
Если после обновления система грузится, но графика не запускается:
- Переключитесь в консоль: обычно
Ctrl+Alt+F2. - Войдите.
3. Проверьте, что именно обновлялось:
rpm -qa --last | head -n 50
Часто виноваты:
- ядро;
- драйверы NVIDIA/AMD/Intel;
- Xorg;
- Wayland-компоненты;
- DisplayManager: SDDM/GDM/LightDM.
Можно временно отключить графический запуск, если используется systemd:
systemctl set-default multi-user.target
После перезагрузки система будет грузиться в текстовый режим.
Вернуть графический режим по умолчанию:
systemctl set-default graphical.target
12. Если был выполнен крупный dist-upgrade
Если в логах видно:
Commandline: apt-get dist-upgrade
и система была переведена с одной ветки на другую, например:
p10 -> p11
stable -> Sisyphus
то полный откат средствами пакетного менеджера обычно крайне рискован.
В таком случае варианты:
- Восстановить снапшот/бэкап.
- Переустановить систему с сохранением
/home. - Вручную откатывать сотни пакетов, заранее скачав старые версии.
- Восстановить систему из резервной копии.
Попытка просто вернуть старый sources.list и сделать dist-upgrade вниз может привести к нестабильной смеси пакетов.
13. Если проблема в ключах, датах или репозиториях
Иногда после обновления пакеты не ставятся из-за неверной даты, битых ключей или повреждённых списков репозиториев.
Проверьте дату
date
Если дата сильно неправильная, HTTPS и GPG могут работать некорректно.
Установить дату вручную можно так:
date -s "2026-09-10 12:00:00"
Очистите списки пакетов, если они повреждены
rm -rf /var/lib/apt/lists/*
apt-get update
Проверьте источники репозиториев
cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/
Убедитесь, что там указана ваша ветка и архитектура, например x86_64.
14. Полезные команды для проверки пакетов
Проверить пакет:
rpm -q <имя_пакета>
Проверить файлы пакета:
rpm -ql <имя_пакета>
Проверить целостность:
rpm -V <имя_пакета>
Например:
rpm -V bash
rpm -V systemd
Если вывод показывает отсутствующие или изменённые файлы, пакет можно переустановить:
apt-get install --reinstall <имя_пакета>
15. Как безопасно выйти из chroot и перезагрузиться
После завершения работ:
exit
Размонтируйте файловые системы:
umount -R /mnt/target
Если ругается, что занято, найдите процессы:
lsof +D /mnt/target
или:
fuser -vm /mnt/target
В крайнем случае можно использовать ленивое размонтирование, но только если понимаете последствия:
umount -l /mnt/target
Затем:
reboot
16. Рекомендуемый порядок действий в большинстве случаев
Короткий практический алгоритм:
# В Live CD
su -
# Найти разделы
lsblk -f
# Смонтировать корень
mkdir -p /mnt/target
mount /dev/sda3 /mnt/target
# Если есть отдельный /boot
mount /dev/sda1 /mnt/target/boot
# Если UEFI
mkdir -p /mnt/target/boot/efi
mount /dev/sda1 /mnt/target/boot/efi
# Подготовить chroot
for i in dev dev/pts proc sys run; do
mount --bind /$i /mnt/target/$i
done
cp -L /etc/resolv.conf /mnt/target/etc/resolv.conf
# Войти в систему
chroot /mnt/target /bin/bash
# Диагностика
rpm -qa --last | head -n 80
less /var/log/apt/history.log
zless /var/log/apt/history.log.1.gz
# Починка пакетной базы при необходимости
rpm --rebuilddb
apt-get clean
apt-get update
apt-get check
apt-get install -f
# Откат пакета, если известна старая версия
apt-get install <пакет>=<старая_версия>
# Выход и перезагрузка
exit
umount -R /mnt/target
reboot
17. Что делать, если старая версия пакета недоступна
Если apt-cache policy не показывает старую версию, а в кэше /var/cache/apt/archives её нет, варианты такие:
- Скачать старый
.rpmс другой машины той же версии и архитектуры. - Найти пакет в архиве вашей ветки ALT.
- Использовать установочный образ той версии, на которой система работала.
- Восстановить систему из резервной копии.
- Переустановить систему, если откат критичных пакетов невозможен.
18. Профилактика на будущее
Чтобы в следующий раз можно было откатиться легко:
- Используйте снапшоты, если файловая система или тома позволяют.
- Не удаляйте старые ядра сразу после обновления.
3. Перед крупным обновлением делайте резервную копию:
/etc
/boot
/var/lib/rpm
/home
4. Перед dist-upgrade смотрите список:
apt-get dist-upgrade --simulate
5. Сохраняйте вывод обновления:
apt-get dist-upgrade 2>&1 | tee /root/upgrade-$(date +%F-%H%M).log
6. На критичных машинах обновляйтесь только после проверки на тестовой системе.
Если система не грузится после обновления в ALT Linux:
- Загрузитесь с Live CD.
- Смонтируйте корень установленной системы.
- Зайдите через
chroot. - По
rpm -qa --lastи/var/log/apt/history.logнайдите обновлённые пакеты. - Откатите конкретные пакеты через
apt-get install package=старая_версияили через старые.rpmс помощьюrpm -Uvh --oldpackage. - При проблемах с загрузкой восстановите старое ядро и GRUB.
- Если был крупный
dist-upgradeмежду ветками, надёжнее восстанавливать бэкап или переустанавливать систему.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.