Гид по технологиям

Как откатить пакеты на Linux

6 min read Linux Обновлено 04 Dec 2025
Как откатить пакеты на Linux
Как откатить пакеты на Linux

Откат пакета в Linux: терминал и менеджер пакетов

Зачем откатывать пакеты

Новые версии пакетов могут содержать регрессии — функциональные ошибки, несовместимости с конфигурациями или удалённые возможности. На рабочих серверах или критичных рабочих станциях стабильность важнее свежести функций. Откат к проверенной версии помогает быстро восстановить работоспособность, не удаляя пакет полностью.

Коротко о рисках и мотивах:

  • На «bleeding-edge» дистрибутивах (напр., Arch) обновления приходят мгновенно и иногда ломают систему.
  • На стабильных ветках (Debian Stable, Ubuntu LTS) пакеты чаще проходят дополнительное тестирование.
  • На серверах откат часто предпочтительнее полной переустановки, так как сохраняются конфигурации и зависимости.

Что важно знать перед откатом

  • Проверьте, какие зависимости потребуют отката тоже — откат одного пакета может потребовать отката библиотек.
  • Сделайте резервную копию важных конфигурационных файлов (обычно в /etc и в домашней директории).
  • По возможности протестируйте откат в окружении staging или на машине с той же конфигурацией.
  • После отката зафиксируйте пакет (hold/pinning/versionlock), чтобы он не обновился снова автоматически.

Основные подходы

  • Установить конкретную версию из репозитория (apt, yum/dnf).
  • Установить ранее скачанный пакет из локального кэша (pacman -U, dpkg -i, rpm -Uvh).
  • Использовать утилиты, облегчающие выбор старых версий (downgrade для Arch, версионирование с помощью apt-cache/apt policy).
  • Зафиксировать версию, чтобы избежать повторного апгрейда.

Как откатить пакеты на Debian и Ubuntu

Простейший путь — установить конкретную версию пакета из репозитория.

  1. Посмотреть все доступные версии в репозиториях:
apt list -a packagename

Альтернативный способ показать информацию и приоритеты:

apt-cache policy packagename

Пример для GNOME Terminal:

apt list -a gnome-terminal

Список доступных версий пакета в Ubuntu в выводе apt

  1. Установить нужную версию (замените version на точную строку из вывода):
sudo apt install gnome-terminal=3.36.1.1-1ubuntu1

После выполнения APT предупредит об откате; подтвердите «Y» и Enter. Проверка версии:

gnome-terminal --version

Процесс отката пакета через APT в Ubuntu

  1. Зафиксировать пакет, чтобы предотвратить обновление:
sudo apt-mark hold gnome-terminal

Вернуть возможность обновления:

sudo apt-mark unhold gnome-terminal
  1. Продвинутая опция — pinning через /etc/apt/preferences.d/ для тонкого контроля по приоритетам версий. Пример файла /etc/apt/preferences.d/gnome-terminal:
Package: gnome-terminal
Pin: version 3.36.1.1-1ubuntu1
Pin-Priority: 1001

Pin-Priority выше 1000 позволяет «понизить» пакет до указанной версии даже если это понижение.

Совет: если нужная версия не в официальных репо, можно скачать .deb с надёжного зеркала или из snapshot.debian.org/launchpad и установить через:

sudo dpkg -i package_version.deb
sudo apt --fix-broken install

Как откатить пакеты на Arch Linux и производных

На Arch сохраняется кэш всех загруженных пакетов в /var/cache/pacman/pkg. Это даёт простой путь установить ранее использованный пакет.

  1. Найти пакет в кэше и установить:
sudo pacman -U /var/cache/pacman/pkg/packagename-old.tar.zst
  1. Если не хочется искать вручную, можно использовать find:
ls -1 /var/cache/pacman/pkg | grep packagename
  1. Утилита downgrade из AUR упрощает процесс: она показывает доступные версии (включая кэш, AUR, архивы) и позволяет выбрать нужную.
yay -S downgrade
sudo downgrade packagename

Утилита downgrade отображает версии пакета в Arch Linux

Далее следуйте меню: выберите версию по номеру, подтвердите установку.

Важно: при откате вручную следите за зависимостями и файлами конфигураций. После отката можно заблокировать пакет, используя package manager hooks или AUR-утилиты; явного аналога apt-mark в pacman нет, но можно воспользоваться ignorepkg в /etc/pacman.conf:

IgnorePkg = packagename

Это предотвратит обновление указанного пакета при pacman -Syu.

Как откатить пакеты на Fedora, CentOS, RHEL

На современных Fedora/RHEL дистрибутивах используется dnf (yum остаётся совместимой обёрткой). Есть встроенная команда downgrade:

sudo dnf downgrade packagename

Для старых версий или если нужно указать конкретный RPM, скачайте RPM-файл (например, с Koji) и установите его:

sudo rpm -Uvh --oldpackage package-version.rpm

Или через dnf:

sudo dnf install package-version.rpm

Откат пакета через yum/dnf в Fedora

Если вы не видите нужную версию в репозиториях, загляните на Fedora Koji:

Список пакетов и версий на Fedora Koji веб-интерфейсе

Пример отката Firefox:

sudo dnf downgrade firefox

Чтобы «зафиксировать» версию в dnf можно использовать плагин versionlock:

sudo dnf install 'dnf-plugins-core'
sudo dnf versionlock add packagename

Процедура отката: мини-методология

  1. Сохраняем состояние:
    • Резерв копий конфигурационных файлов (tar/rsync).
    • Список установленных версий (apt list –installed / pacman -Q / rpm -qa).
  2. Анализируем зависимости и совместимость.
  3. Выполняем откат выбранного пакета и его зависимостей.
  4. Проверяем работоспособность сервиса или приложения.
  5. Фиксируем пакет от автоматических обновлений.
  6. Документируем причину и шаги отката.

Короткая команда для создания списка текущих пакетов:

apt list --installed > installed-packages.txt
pacman -Q > installed-packages.txt
rpm -qa > installed-packages.txt

Когда откат не помогает — альтернативы

  • Вручную вернуть старую конфигурацию (backup) и перезапустить сервис.
  • Использовать контейнеризацию или виртуальные машины для запуска приложений в изолированной, проверенной среде.
  • Откат системы через снапшот (LVM snapshot, Btrfs/ZFS snapshot, VM snapshot).
  • Установить параллельную версию приложения (если поддерживается рядом) и постепенно мигрировать.

Что может пойти не так — когда откат не применим

  • Нужная для работы версия недоступна в репозиториях и кэше и отсутствует на внешних архивах.
  • Откат ломает другие пакеты из-за несовместимости API/ABI (особенно опасно на серверах).
  • Обновления безопасности: откат может вернуть уязвимость.

Если безопасность критична, рассмотрите временное решение (rollback конфигурации, переключение на резервный узел) и работу с разработчиками/поставщиками пакета.

Проверки и критерии приёмки

Критерии, по которым вы узнаете, что откат успешен:

  • Приложение запускается без ошибок и предоставляет ожидаемый функционал.
  • Логи больше не содержат критических ошибок, связанных с пакетом.
  • Зависимые сервисы работают корректно.
  • Пакет заблокирован от автоматических обновлений (apt-mark hold / IgnorePkg / dnf versionlock).

Команды для проверки:

systemctl status your-service
journalctl -u your-service --since "1 hour ago"
packagename --version

Рольовые чек-листы (быстрая проверка)

Администратор перед откатом:

  • Снял бэкап конфигураций
  • Проверил зависимости
  • Проверил доступность старой версии
  • Уведомил пользователей/заинтересованные стороны

После отката:

  • Проверил логи
  • Зафиксировал пакет
  • Документировал причину и шаги

Разработчик:

  • Проверяет баг-репорт и воспроизводимость
  • Готовит фикс или откат на стороне пакета

Отказоустойчивость и откат на уровень системы

Если простая установка старой версии не помогает и система нестабильна, используйте снапшоты файловой системы (Btrfs, LVM), резервные образы или восстановление из резервной копии образа VM.

Советы по безопасности и приватности

  • Откат может вернуть уязвимости — перед откатом оцените риск и, при возможности, включите временные компенсирующие меры (Firewall, ограничения доступа).
  • Не скачивайте пакеты из сомнительных источников. Предпочтительнее использовать официальные зеркала или проверенные архивы (snapshot.debian.org, Fedora Koji).

Быстрые шпаргалки

Debian/Ubuntu:

apt list -a packagename
sudo apt install packagename=version
sudo apt-mark hold packagename

Arch:

sudo pacman -U /var/cache/pacman/pkg/packagename-old.tar.zst
sudo downgrade packagename
# или добавить в /etc/pacman.conf: IgnorePkg = packagename

Fedora/RHEL:

sudo dnf downgrade packagename
sudo dnf install package-version.rpm
sudo dnf versionlock add packagename

Ментальная модель и эвристики

  • Если проблема критична и известна, откат до ближайшей стабильной версии — быстрый путь к восстановлению.
  • Если откат решает проблему, исследуйте причину и сообщите в баг-трекер пакета.
  • Фиксируйте пакеты только временно и планируйте обновление после выпуска исправления.

Диаграмма решения (Mermaid)

flowchart TD
  A[Пакет обновлён и сломался] --> B{Есть ли проверенная предыдущая версия?}
  B -- Да --> C[Проверить зависимости]
  B -- Нет --> I[Искать в зеркалах / Koji / snapshot]
  I --> J{Найдена версия?}
  J -- Да --> C
  J -- Нет --> K[Рассмотреть VM/контейнер или откат системы по снапшоту]
  C --> D{Влияет ли откат на другие пакеты?}
  D -- Нет --> E[Выполнить откат и протестировать]
  D -- Да --> F[Откатить зависимости / план тестирования]
  F --> E
  E --> G[Зафиксировать версию и документировать]
  G --> H[Наблюдать / планировать обновление]

Короткий глоссарий

  • Откат (downgrade) — установка более старой версии пакета.
  • Hold/Ignore/Versionlock — механизмы блокировки пакета от автоматических обновлений.
  • Кэш пакетов — локальное хранилище ранее загруженных пакетов.

Итог

Откат пакетов — стандартная операция для восстановления стабильности системы после проблем с новыми версиями. Основные шаги: найти нужную версию, установить её корректно, проверить зависимости, протестировать сервисы и зафиксировать пакет, чтобы избежать повторного обновления. При недостатке нужной версии рассмотрите контейнеризацию, использование снапшотов или восстановление из резервной копии.

Важно: всегда документируйте причину отката и, по возможности, сообщайте о баге разработчикам пакета, чтобы проблема была решена в будущих релизах.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как редактировать отправленные сообщения в Telegram
Руководство

Как редактировать отправленные сообщения в Telegram

Настройка плиток в меню «Пуск» Windows 10
Windows

Настройка плиток в меню «Пуск» Windows 10

Как измерить фантомную нагрузку и сэкономить
Энергосбережение

Как измерить фантомную нагрузку и сэкономить

Что делать при зависании Linux: приложения и система
Linux

Что делать при зависании Linux: приложения и система

Рисовать мышью на ПК — полное руководство
Графика

Рисовать мышью на ПК — полное руководство

Как открыть RAR на iPhone быстро
Мобильные инструкции

Как открыть RAR на iPhone быстро