Как понизить версию программного обеспечения/пакета в Linux
Иногда пакеты Linux ломаются. Вышло новое обновление, но оно не было хорошо протестировано. Возможно, вы используете новейший дистрибутив или странную пользовательскую конфигурацию. Вы можете даже просто сохранить старую версию пакета для тестирования или отложить внесение изменений.
Существует множество причин, по которым вам может потребоваться откатить установку Linux до более ранней версии пакета. Этот процесс зависит от менеджера пакетов вашего дистрибутива, но в большинстве случаев это возможно.
Убунту/Дебиан
Apt — один из самых любимых менеджеров пакетов в мире Linux, но в данном случае это один из самых неудобных и громоздких вариантов работы. Apt не имеет каких-либо установленных механизмов для отката пакетов и не имеет системы кэширования, на которую вы действительно можете рассчитывать в таких ситуациях. Тем не менее, обычно вы можете найти способ установить более старую версию пакета.
sudo apt-cache showpkg firefox
Это выдаст много информации, которая вам, вероятно, не нужна, но также покажет вам ранее установленные версии пакета или дополнительные версии.
Выбрав пакет, установите его, указав версию.
sudo apt install firefox=60.1
Здесь есть еще один вариант. Если вы можете найти более старую версию нужного вам пакета, вы можете загрузить ее отдельно и установить с помощью dpkg
(подробнее о dpkg здесь). Вы даже можете найти их в более старой версии вашего дистрибутива. Например, если вы используете Ubuntu Bionic, вы можете установить пакет из Xenial. В этом случае вы можете сделать что-то вроде следующего:
sudo dpkg -i firefox-60.1.deb
Федора
Менеджер пакетов DNF Fedora имеет несколько очень полезных встроенных механизмов, которые позволяют вам установить предыдущую версию пакета или выполнить откат после любого изменения или обновления.
Во-первых, и, вероятно, это наиболее просто, вы можете установить предыдущую версию пакета из репозиториев DNF. Начните с перечисления всех доступных вариантов.
sudo dnf --showduplicates list package_name
DNF предоставит вам все версии пакета в ваших включенных репозиториях. Выберите тот, который вам нужен, и установите его, указав номер версии DNF.
sudo dnf install package_name-version.fc28
DNF установит указанную вами версию пакета поверх существующей версии.
Как упоминалось ранее, DNF хранит полную историю снимков. Вы можете использовать эту историю, чтобы вернуть вашу систему в более раннее состояние. Начните с перечисления истории DNF.
sudo dnf history
Должно быть легко найти точку, в которую вы хотите вернуться, но вы можете легко получить информацию о транзакции DNF по ее идентификационному номеру.
sudo dnf history info 42
Если вы уверены, что выбрали правильный вариант, отмените транзакцию.
sudo dnf history undo 42
DNF отменит эту транзакцию, вернув вашу систему в предыдущее состояние.
OpenSUSE
В OpenSUSE вы можете управлять этим либо графически с помощью YaST, либо через командную строку с помощью Zypper. В этом руководстве будет рассмотрен Zypper, поскольку он является одновременно самым простым и универсальным.
Для начала выполните поиск в истории Zypper с помощью grep
.
cat /var/log/zypp/history | grep package_name
Найдя версию, к которой хотите вернуться, установите ее.
sudo zypper -in -f package_name-version
Арч Линукс
Откат пакетов до более ранней версии в Arch Linux очень прост, если вы не очищаете кеш Pacman слишком часто. Pacman, менеджер пакетов Arch, сохраняет каждый устанавливаемый вами пакет в назначенной папке кэша.
Как и большинство вещей в Arch, это сделано для простоты. Разработчики Arch понимают, что в таком быстро развивающемся дистрибутиве, как Arch, время от времени возникают ошибки, поэтому они сделали процесс отката максимально простым.
Проверьте, какие версии доступны, перечислив содержимое «/var/cache/pacman/pkg/». Вам будет легче, если вы будете искать с помощью grep
.
ls /var/cache/pacman/pkg/ | grep package_name
Найдя его, установите его с помощью Pacman.
sudo pacman -U /var/cache/pacman/pkg/package_name-version.pkg.tar.xz
Pacman автоматически установит старую версию поверх текущего пакета.
Это все, что вам нужно сделать. Следуйте процедуре, соответствующей вашему дистрибутиву, и вы сможете вернуть свою систему к предыдущей и, надеюсь, менее проблемной версии пакета. Вы также должны иметь в виду, что все эти методы противоречат обычному потоку вашего дистрибутива, поэтому они не всегда могут работать. Это отличный первый шаг, и вы всегда должны это пробовать.