Сломался один пакет после обновления — откатывать всю систему не нужно. Достаточно вернуть рабочую версию этого пакета командой sudo pacman -U /var/cache/pacman/pkg/имя-версия.pkg.tar.zst. Ниже четыре реальных кейса: драйвер NVIDIA, mesa, wireplumber и ядро. Для каждого — команды, порядок действий и подводные камни.
Откат одного пакета — это установка старой версии поверх текущей. Pacman не умеет выбирать версию из репозитория: команды pacman -S пакет=1.2.3 не существует. Поэтому старую версию берут из файла .pkg.tar.zst и ставят командой pacman -U:
sudo pacman -U /var/cache/pacman/pkg/nvidia-570.133.07-1-x86_64.pkg.tar.zst
Pacman проверит подписи, заменит файлы и вернёт пакет к указанной версии. Конфиги не трогаются, зависимости пересчитываются автоматически. Никаких дополнительных действий не нужно.
Откуда брать старую версию? Два источника.
Первый — кэш pacman /var/cache/pacman/pkg. Туда попадает каждый скачанный пакет, поэтому после обновления там лежит и старая, и новая версия. Найти нужную:
ls /var/cache/pacman/pkg/ | grep nvidia
Второй — Arch Linux Archive на archive.archlinux.org. Там хранятся все когда-либо опубликованные версии пакетов. Если кэш почистили или нужной версии в нём нет, качаешь файл оттуда и ставишь той же командой pacman -U. Подробнее про оба источника — в статьях «Установка конкретной версии пакета из кэша» и «Arch Linux Archive: откат пакетов».
Общий алгоритм для всех случаев один: определи, какой пакет сломался, найди рабочую версию, откати её, заблокируй от повторного обновления. Полный разбор общего сценария — в статье «Сломалось после обновления: единый гайд по откату».
Перед откатом убедись, что проблема локальная. Если после pacman -Syu не грузится система или ошибки сыплются от десятка программ — дело в конфликте версий библиотек, и откат одного пакета не поможет. Если же сломалось одно конкретное: пропал звук, упал FPS, не стартует драйвер — виновник один.
Смотри журнал загрузки:
journalctl -b -p 3
Ошибки уровня error и выше покажут, какой компонент падает. Потом сопоставь его с недавними обновлениями из /var/log/pacman.log — там видно, что ставилось прямо перед поломкой. Как читать лог pacman, разобрано в статье «Читаем логи обновлений».
Симптомы: после pacman -Syu чёрный экран при старте, Xorg или Wayland не запускается, nvidia-smi падает с ошибкой про версию ядра.
Чаще всего виновата пара «драйвер + ядро». Модуль nvidia собирается под конкретную версию ядра. Если ядро обновилось, а модуль не пересобрался — драйвер не загрузится, и графическая сессия не стартует. Проверь:
nvidia-smi
Если команда ругается на несовпадение версий, откатывай драйвер:
sudo pacman -U /var/cache/pacman/pkg/nvidia-570.133.07-1-x86_64.pkg.tar.zst
Если вместе с драйвером обновилось ядро, откатывай и его, и заголовки. Иначе модуль не соберётся под старую версию ядра:
sudo pacman -U /var/cache/pacman/pkg/linux-6.12.arch1-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/linux-headers-6.12.arch1-1-x86_64.pkg.tar.zst
sudo mkinitcpio -P
mkinitcpio -P пересоберёт initramfs для всех установленных ядер. Без этого система может не загрузиться после отката ядра.
Симптомы: после обновления FPS в играх упал в два раза, на экране артефакты, игры падают с ошибками рендера. Виновата обычно свежая версия mesa — графического стека для AMD и Intel.
Откат:
sudo pacman -U /var/cache/pacman/pkg/mesa-24.3.4-1-x86_64.pkg.tar.zst
Тут важный нюанс. Mesa тянет за собой библиотеки: libglvnd, vulkan-radeon, vulkan-intel, mesa-utils. Если откатить только mesa, а библиотеки оставить новыми, возможен конфликт версий: приложения будут ходить в старую mesa через новые библиотеки и падать. Поэтому откатывай весь набор разом:
sudo pacman -U /var/cache/pacman/pkg/mesa-24.3.4-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/libglvnd-1.7.0-2-x86_64.pkg.tar.zst
Как понять, что откатывать вместе? Смотри зависимости пакета:
pactree mesa
Или откати только mesa, проверь, работает ли, и добавляй библиотеки по одной, если что-то падает.
Симптомы: после обновления пропал звук, Bluetooth-наушники не подключаются, wpctl status показывает пустой список устройств. Wireplumber — менеджер сессий для PipeWire. Его свежая версия иногда ломает связку с PulseAudio-совместимым слоем, и звук пропадает целиком.
Откат:
sudo pacman -U /var/cache/pacman/pkg/wireplumber-0.5.8-1-x86_64.pkg.tar.zst
После отката перезапусти звуковой стек:
systemctl --user restart wireplumber pipewire pipewire-pulse
Если звук вернулся, а следующее обновление снова тянет новую версию — заблокируй пакет на время (см. ниже). Через пару недель, когда выйдет исправленная версия, сними блокировку и обновись.
Симптомы: система зависает через несколько минут после загрузки, тормозит, падает в emergency mode. Откат ядра — самый ответственный случай: откатывать нужно и ядро, и заголовки, и пересобирать initramfs.
sudo pacman -U /var/cache/pacman/pkg/linux-6.12.arch1-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/linux-headers-6.12.arch1-1-x86_64.pkg.tar.zst
sudo mkinitcpio -P
Если система вообще не грузится, загрузись со старым ядром из меню GRUB — пункт «Advanced options for Arch Linux» — и откатывай уже из рабочей системы. Полный разбор — в статье «Зависание после обновления ядра».
После отката pacman -Syu снова поставит свежую версию, и проблема вернётся. Чтобы этого не случилось, добавь пакет в IgnorePkg в /etc/pacman.conf:
# /etc/pacman.conf
IgnorePkg = nvidia mesa wireplumber
Теперь pacman -Syu пропускает эти пакеты и оставляет текущие версии. Когда выйдет исправленная версия, убери строку и обновись.
Важно: замораживать библиотеки вроде glibc или python нельзя — система скатится в частичное обновление и развалится. Игнорировать можно только «листовые» пакеты: драйверы, ядра, приложения.
Главный риск — конфликт версий библиотек. Пакет зависит от библиотеки с определённым soname — именем, в которое зашита версия ABI. Если откатить пакет, а библиотеку оставить новой, приложение может не найти нужный символ и упасть с ошибкой вроде undefined symbol.
Пример: откатил mesa, а libglvnd остался новым. Приложения, собранные против старой mesa, могут падать при старте. Поэтому правило простое: откатывай пакет вместе с его библиотеками, а не по одному. Проверяй зависимости через pactree перед откатом.
Второй момент — откат не трогает конфиги. Если проблема в конфигурации, а не в версии пакета, откат не поможет. Проверь логи до отката: journalctl -b -p 3 покажет, что именно падает, а /var/log/pacman.log — что обновилось перед поломкой.
Третий момент — откат не отменяет обновление в будущем. Через неделю-две выйдет исправленная версия, и её стоит поставить. Держать пакет замороженным месяцами не нужно: он разойдётся с остальной системой, и откат понадобится снова.
Качай её из Arch Linux Archive. На archive.archlinux.org в каталоге packages/ лежат все версии всех пакетов. Скачай файл .pkg.tar.zst и поставь через pacman -U. Инструкция по поиску и установке — в статье про Arch Linux Archive.
Зависит от пакета. Для приложений обычно достаточно откатить сам пакет. Для графического стека и библиотек откатывай всё разом, иначе возможен конфликт версий. Проверяй зависимости через pactree.
Смотри /var/log/pacman.log — там видно, что обновилось прямо перед поломкой. Потом сопоставь с ошибками из journalctl -b -p 3. Обычно виновник находится за пару минут.
Нет. Откат — временная мера, чтобы вернуть рабочую систему. Когда выйдет исправленная версия, сними блокировку из IgnorePkg и обновись. Держать пакет замороженным годами не стоит: рано или поздно он разойдётся с остальной системой.
Откат одного пакета — самый быстрый способ вернуть рабочую систему после неудачного обновления. Найди старую версию в кэше или в Arch Linux Archive, поставь её через pacman -U, заблокируй от повторного обновления через IgnorePkg. Через пару недель сними блокировку и обновись — скорее всего, проблема уже исправлена.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии