LinuxFAQ.ru

Как откатить пакет до предыдущей версии: apt downgrade package — как исправить

Иногда после обновления пакета в системе Linux возникает необходимость вернуться к предыдущей версии из-за ошибок или несовместимости. В этой статье мы рассмотрим, как с помощью пакетного менеджера apt откатить пакет до нужной версии на примере пакета nginx.

Почему возникает необходимость отката пакета

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

Пошаговое решение

1. Проверить доступные версии пакета

apt list -a nginx

Команда выводит все доступные в репозиториях версии пакета nginx. Например:

nginx/focal-updates,now 1.18.0-0ubuntu1.4 amd64 [installed]
nginx/focal 1.18.0-0ubuntu1 amd64

2. Узнать текущую установленную версию

apt policy nginx

Вывод показывает установленную версию и доступные для установки. Пример:

Installed: 1.18.0-0ubuntu1.4
Candidate: 1.18.0-0ubuntu1.4
Version table:
   1.18.0-0ubuntu1 500
      500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

3. Установить конкретную версию пакета

Чтобы откатить, указываем нужную версию:

sudo apt install nginx=1.18.0-0ubuntu1

Команда установит указанную версию пакета, если она доступна в репозиториях или кэше.

4. Зафиксировать версию пакета (чтобы избежать автоматического обновления)

sudo apt-mark hold nginx

Теперь nginx не будет обновляться при выполнении sudo apt upgrade. Чтобы снять блокировку:

sudo apt-mark unhold nginx

5. Проверить установленную версию

apt policy nginx

Убедитесь, что теперь установлена нужная версия (например, 1.18.0-0ubuntu1).

Альтернативные методы

Использование кэшированных пакетов

Если нужная версия осталась в кэше, можно установить её вручную:

sudo dpkg -i /var/cache/apt/archives/nginx_1.18.0-0ubuntu1_amd64.deb

При ошибках зависимостей используйте:

sudo apt -f install

Добавление старого репозитория или архива

Если нужная версия недоступна, можно добавить архивный репозиторий. Например, для Ubuntu 20.04:

deb http://archive.ubuntu.com/ubuntu/ focal main universe

После обновления списка пакетов:

sudo apt update
sudo apt install nginx=1.18.0-0ubuntu1

Проверка результата

Проверьте, какая версия установлена:

dpkg -l | grep nginx

Или запустите саму программу:

nginx -v

Вывод должен содержать нужную версию:

nginx version: nginx/1.18.0 (Ubuntu)

Как избежать проблем с версиями в будущем

  • Перед обновлением проверяйте список пакетов и блокируйте важные версии через apt-mark hold.
  • Тестируйте обновления в отдельной системе или виртуальной машине.
  • Храните резервные копии критичных .deb пакетов.
  • Используйте apt-cache policy для проверки версий перед установкой.

FAQ

Как узнать все версии пакета?
Используйте apt list -a nginx или apt-cache madison nginx.

Что делать, если нужной версии нет?
Добавьте архивный репозиторий или найдите .deb-файл на packages.ubuntu.com / snapshot.debian.org.

Нужно ли перезагружать систему?
Нет, достаточно перезапустить службу:

sudo systemctl restart nginx

Смотрите также: Как заблокировать обновление пакета в apt — практическое руководство.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие материалы