Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Откат одного пакета: nvidia, mesa, wireplumber, ядро

Сломался один пакет после обновления — откатывать всю систему не нужно. Достаточно вернуть рабочую версию этого пакета командой 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, разобрано в статье «Читаем логи обновлений».

Кейс 1: NVIDIA сломался после обновления драйвера

Симптомы: после 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 для всех установленных ядер. Без этого система может не загрузиться после отката ядра.

Кейс 2: mesa — падение FPS и артефакты

Симптомы: после обновления 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, проверь, работает ли, и добавляй библиотеки по одной, если что-то падает.

Кейс 3: wireplumber — пропал звук или Bluetooth

Симптомы: после обновления пропал звук, 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

Если звук вернулся, а следующее обновление снова тянет новую версию — заблокируй пакет на время (см. ниже). Через пару недель, когда выйдет исправленная версия, сними блокировку и обновись.

Кейс 4: ядро — зависания после обновления

Симптомы: система зависает через несколько минут после загрузки, тормозит, падает в 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. Через пару недель сними блокировку и обновись — скорее всего, проблема уже исправлена.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max