Все об Arch Linux

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

Почему частичное обновление pacman — это боль

Частичное обновление pacman это когда ты обновляешь базу пакетов (pacman -Sy), а потом ставишь один пакет, не обновляя всю систему. На Arch такой подход ведёт к сломанной системе: библиотеки в репозитории уже новые, а на диске старые, и свежий пакет просто не заведётся. Правило одно: только pacman -Syu, целиком, без исключений.

Почему частичное обновление ломает систему

Arch это rolling release. Пакеты в репозиториях обновляются постоянно, и собираются они против свежих версий библиотек. Когда ты делаешь pacman -Sy <пакет>, ты говоришь pacman: «обнови базу, но не трогай установленные пакеты». База теперь знает про новые версии, а на диске лежат старые.

Дальше классика. Ставишь свежий пакет, который требует новую версию библиотеки. Библиотека не обновлена. Пакет падает с ошибкой про отсутствующую библиотеку или вообще не стартует. Хуже того: частичное обновление может сломать уже работающие программы, потому что обновлённый пакет тянет за собой зависимости, а остальная система остаётся старой. Получается каша из версий, которую распутывать дольше, чем просто обновить всё сразу.

Правило Arch гласит прямо: никаких частичных обновлений. Это не рекомендация, а условие работы системы. Официальная документация System Maintenance на ArchWiki описывает этот сценарий отдельно.

Как правильно обновляться

Одна команда, всегда:

sudo pacman -Syu

Она обновляет базу пакетов и все установленные пакеты за один проход. Никаких промежуточных состояний, никаких рассинхронов версий.

Если пользуешься AUR через yay, история та же, одной командой:

yay -Syu

yay сначала обновит официальные пакеты через pacman, потом пройдётся по AUR. Про установку из AUR я писал отдельно: установка AUR.

Кстати, про yay есть тонкость, которая пугает новичков. Команда yay -Qua показывает доступные обновления из AUR. Если обновлений нет, yay завершается с кодом 1. Это не ошибка. Это «обновлений нет». Не надо ничего чинить и переустанавливать yay. Просто запомни: exit code 1 у yay -Qua при актуальных пакетах это нормальное поведение.

Чистка кэша: paccache и pacman -Sc

Каждый обновлённый пакет pacman оставляет в /var/cache/pacman/pkg. Со временем там копятся старые версии, и кэш разрастается на гигабайты. Чистить его нужно, но с умом.

paccache -r удаляет все версии пакета, кроме последних трёх (по умолчанию). Это безопасный вариант: свежие версии остаются, старьё уходит.

sudo paccache -r

Если хочется жёстче, pacman -Sc удалит из кэша всё, кроме установленных версий. Только учти: после этого откатить пакет на прошлую версию из кэша уже не выйдет. Для большинства случаев paccache -r достаточно.

Сироты: pacman -Qdt

Сироты это пакеты, которые остались без зависимых. Поставил программу, она потянула библиотеки, потом ты программу удалил, а библиотеки остались. Они не нужны, но занимают место и иногда тянут лишние сервисы.

Проверка одной командой:

pacman -Qdt

Пустой вывод: сирот нет. Если список есть, смотри, что там, и удаляй лишнее:

sudo pacman -Rns $(pacman -Qdtq)

Только не удаляй вслепую. Сначала глянь, что за пакеты. Иногда сирота оказывается нужным.

Пример из практики: разбор драйверов

Расскажу, как это выглядело у меня. По согласованию провели аудит пакетов: прошлись по списку установленного и выкинули всё, что не используется. Больше всего мусора было среди драйверов.

Машина на AMD, встроенная графика Cezanne/Vega. Под неё нужен amdgpu, он в ядре. А в системе висели драйверы под железо, которого нет: Intel, NVIDIA, старые ATI. Всё это сняли. Заодно убрали пакеты, которые тянулись за ними.

Результат приятно удивил: pacman -Qdt после чистки показал пустой список. Ни одного сироты. Осталось только то, что нужно под реальное железо. Про разбор драйверов NVIDIA, если у тебя именно такая видеокарта, читай отдельно: драйвер NVIDIA в Arch.

Смысл этой истории простой: система чистая, когда в ней нет лишнего. А лишнее в Arch появляется быстро, если не следить.

Частые вопросы

Что будет, если один раз сделать pacman -Sy?

Скорее всего, ничего страшного. Но это лотерея: в следующий раз свежий пакет может не завестись из-за старой библиотеки. Один раз может пройти, привычка заканчивается сломанной системой.

pacman -Syu и pacman -Sy в чём разница?

-Sy обновляет только базу пакетов. -Syu обновляет базу и все пакеты. Первая команда без второй создаёт рассинхрон версий.

Почему yay возвращает код 1 при проверке обновлений?

Потому что обновлений нет. yay -Qua с актуальными пакетами завершается с кодом 1, это штатное поведение, а не ошибка.

Сироты это всегда мусор?

Почти всегда. Но перед удалением посмотри список pacman -Qdt. Иногда пакет нужен вручную, просто он больше не числится зависимостью.

Что делать, если pacman ругается на заблокированные файлы или ключи?

Это отдельные сценарии, не связанные с частичным обновлением. Подробный разбор есть на ArchWiki в статьях про pacman и System Maintenance.

Заключение

Частичное обновление это главный способ сломать Arch своими руками. Правило простое: только pacman -Syu, целиком. Кэш чисти paccache -r, сирот проверяй pacman -Qdt, а exit code 1 у yay -Qua не считай ошибкой. Следуешь этим четырём пунктам, и система живёт годами без переустановки.

Полезные ресурсы



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

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

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

Комментарии

Загрузка…

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

Telegram Max