Иногда после обновления пакета в системе 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 amd642. Узнать текущую установленную версию
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 Packages3. Установить конкретную версию пакета
Чтобы откатить, указываем нужную версию:
sudo apt install nginx=1.18.0-0ubuntu1Команда установит указанную версию пакета, если она доступна в репозиториях или кэше.
4. Зафиксировать версию пакета (чтобы избежать автоматического обновления)
sudo apt-mark hold nginxТеперь nginx не будет обновляться при выполнении sudo apt upgrade. Чтобы снять блокировку:
sudo apt-mark unhold nginx5. Проверить установленную версию
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 — практическое руководство.