Частичное обновление 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 при актуальных пакетах это нормальное поведение.
Каждый обновлённый пакет pacman оставляет в /var/cache/pacman/pkg. Со временем там копятся старые версии, и кэш разрастается на гигабайты. Чистить его нужно, но с умом.
paccache -r удаляет все версии пакета, кроме последних трёх (по умолчанию). Это безопасный вариант: свежие версии остаются, старьё уходит.
sudo paccache -r
Если хочется жёстче, pacman -Sc удалит из кэша всё, кроме установленных версий. Только учти: после этого откатить пакет на прошлую версию из кэша уже не выйдет. Для большинства случаев paccache -r достаточно.
Сироты это пакеты, которые остались без зависимых. Поставил программу, она потянула библиотеки, потом ты программу удалил, а библиотеки остались. Они не нужны, но занимают место и иногда тянут лишние сервисы.
Проверка одной командой:
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 не считай ошибкой. Следуешь этим четырём пунктам, и система живёт годами без переустановки.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии