Безопасное обновление Arch Linux строится на простой идее: сначала скачать, потом проверить, потом применить. Команда pacman -Syuw скачивает все пакеты без установки, pacman -Su --print показывает, что именно приходит, df -h / проверяет место на диске, и только после этого запускается pacman -Syu. Если ошибка случится на этапе скачивания, система останется нетронутой, а ты заметишь проблему задолго до перезагрузки.
Обычный pacman -Syu делает всё за один проход: обновляет базы, качает пакеты и сразу ставит их. Удобно, но рискованно. Если зеркало отдаёт битый пакет, сеть рвётся на середине или подпись не сходится, pacman прерывает транзакцию, а ты уже в процессе. Скачивание и установка смешаны в один шаг, и непонятно, где именно сломалось.
-Syuw разделяет эти два этапа. Флаг -w говорит pacman: только скачай, ничего не ставь. Пакеты ложатся в /var/cache/pacman/pkg, а система остаётся в прежнем состоянии. Все ошибки сети, зеркал и проверки подписей всплывают здесь, до того как что-то начнёт меняться на диске. Типичные случаи вроде «pacman fails to commit» разобраны в статье «pacman fails to commit: битые и повреждённые пакеты».
Ещё один плюс: -Syuw показывает общий размер загрузки. Перед большим обновлением полезно знать, сколько придётся качать, особенно на медленном канале. Если обновление большое, а канал медленный, скачивание можно запустить заранее, например вечером, а установку сделать утром. Скачанное дождётся тебя в кэше.
sudo pacman -Syuw
Разбор флагов: -S синхронизация пакетов, -y обновление баз данных, -u обновление системы, -w только скачивание. Команда обновит базы, посчитает зависимости и скачает все новые пакеты в кэш. Ни один файл в системе не изменится.
Если зеркала медленные или отваливаются, ты увидишь это именно здесь. pacman попробует следующее зеркало, но при плохом списке зеркал загрузка может тянуться часами. Настройка списка зеркал разобрана в статье «Медленные зеркала: настройка reflector».
Важный момент: -Syuw безопасен, потому что ничего не устанавливает. А вот pacman -Sy без установки запускать нельзя: он обновляет базы, и система оказывается в состоянии частичного обновления, когда базы новее установленных пакетов. -Syuw такой проблемы не создаёт, но и затягивать между скачиванием и установкой не стоит.
Перед применением полезно посмотреть список пакетов без каких-либо действий:
pacman -Syu --print
Команда выводит список пакетов, которые будут обновлены, с версиями. Ничего не скачивает и не устанавливает. Вывод выглядит как строки вида core/linux 6.10.1-1 -> 6.10.2-1: репозиторий, имя пакета, старая и новая версия. Вариант pacman -Su --print делает то же самое, но без обновления баз, по уже скачанным базам.
Смотри на крупные прыжки версий: ядро, systemd, glibc, mesa. Если обновление тянет за собой пересборку чего-то неожиданного или меняет десятки зависимостей, это повод задуматься. Иногда лучше подождать пару дней, чем ставить свежий релиз в первый же час.
Обновление пишет новые файлы в /usr, /boot и /var. Если диск заполнен на середине транзакции, pacman не сможет завершить установку, и ты получишь полуобновлённую систему. Проверка занимает секунду:
df -h /
Если /boot вынесен на отдельный раздел, проверь и его:
df -h /boot
Полный диск во время обновления, это худший сценарий: часть пакетов уже заменена, часть нет, а места для отката тоже нет. Проще проверить заранее. Если места мало, почисти кэш pacman или старые ядра до обновления.
Отдельно посмотри на кэш pacman. После больших обновлений в /var/cache/pacman/pkg лежат и старые, и новые версии пакетов, и каталог может занимать гигабайты. Если место на нуле, почисти кэш до обновления, а не после: sudo pacman -Sc удалит пакеты, которые больше не нужны ни одному установленному пакету. Только не запускай чистку между -Syuw и -Syu, иначе скачанное пропадёт.
Когда пакеты уже в кэше, установка проходит быстро:
sudo pacman -Syu
pacman возьмёт пакеты из /var/cache/pacman/pkg и не будет качать их заново. Если какой-то пакет повреждён или не прошёл проверку подписи, ты уже знаешь об этом с этапа -Syuw. Сам этап установки теперь почти не таит сюрпризов.
Если во время установки pacman всё же попросит что-то скачать, значит, пакет изменился в репозитории после твоего -Syuw. Это нормально: pacman просто докачает свежую версию.
После установки обрати внимание на сообщения в конце вывода. Перегенерировался ли initramfs, обновился ли конфиг загрузчика. Подробно про хуки и модули mkinitcpio рассказано в статье «mkinitcpio подробно: хуки и модули».
Быстрая проверка целостности установленных пакетов:
pacman -Qkk
Команда сверяет файлы пакетов с базой данных. Если какой-то пакет повреждён или конфликтует, ты увидишь это сразу. Для полной переустановки проблемных пакетов есть отдельная методика, но обычно -Qkk хватает для быстрой проверки.
Дальше проверь журнал загрузки:
journalctl -b -p 3
Ошибки уровня err и выше за текущую загрузку. Разбор вывода journalctl после загрузки описан в статье «Читаем journalctl: первая загрузка».
Заодно глянь, не упали ли службы:
systemctl --failed
Пустой вывод, значит, всё поднялось штатно. Если служба в списке, разберись с ней до перезагрузки, а не после.
Проверь вход в систему, работу сети и графической сессии. Если обновились systemd, dbus или X-сервер, перезапусти соответствующие службы или перелогинься. После обновления ядра перезагрузка обязательна, иначе система продолжит работать на старом ядре.
Если обновилось ядро, убедись, что конфиг загрузчика перегенерирован. Обычно это делает хук pacman, но при нестандартной настройке проверь вручную:
grub-mkconfig -o /boot/grub/grub.cfg
Нажми Ctrl+C. pacman корректно обрабатывает прерванные транзакции: уже установленные пакеты остаются, база данных не рассинхронизируется. После этого просто запусти sudo pacman -Syu заново, pacman продолжит с того места, где остановился.
Если падает конкретный пакет, разберись с ним отдельно, а не перезагружайся с полуобновлённой системой. Перезагрузка с незавершённой транзакцией, это лотерея. Лучше починить пакет или дождаться исправления в репозитории.
Ещё один вариант: пакет не ставится из-за конфликта файлов. Тогда pacman покажет, какой файл мешает, и предложит варианты. Не удаляй файл вслепую, сначала посмотри, какому пакету он принадлежит: pacman -Qo /путь/к/файлу.
Да, для крупных изменений это разумная стратегия. Обновление systemd до новой мажорной версии, свежее ядро, glibc: в первые дни после релиза такие пакеты часто получают горячие исправления. Подождав два-три дня, ты ставишь уже подлатанную версию.
Следи за новостями на официальном сайте Arch Linux и на форуме. Если релиз проблемный, там быстро появляются предупреждения. Перед тем как ставить крупное обновление, загляни в список изменений: на странице пакета видно, что поменялось в новой версии. Если в changelog мелькают правки, связанные с загрузкой или файловой системой, это повод отнестись к обновлению внимательнее. Если хочешь придержать конкретный пакет, не обновляя остальную систему, используй IgnorePkg в /etc/pacman.conf, об этом рассказано в статье «Частичное обновление и IgnorePkg».
Можно. pacman -Syu остаётся стандартным способом обновления, и для мелких повседневных обновлений он удобнее: одна команда, и всё готово. -Syuw добавляет страховку для больших обновлений, когда хочется увидеть размер загрузки, поймать ошибки до установки и не сидеть с прерванной транзакцией на медленном канале.
-Sy только обновляет базы данных пакетов, ничего не скачивает и не устанавливает. Запускать его отдельно опасно: базы становятся новее установленных пакетов, и система попадает в состояние частичного обновления. -Syuw тоже обновляет базы, но сразу скачивает все новые пакеты, поэтому система не остаётся в промежуточном состоянии.
Повтори команду, pacman докачает недостающее. Если ошибка повторяется, проверь сеть и список зеркал. Битый пакет на зеркале обычно исчезает после обновления списка зеркал или смены зеркала.
Нет. Перезагрузка обязательна после обновления ядра: пока система работает, старое ядро остаётся в памяти, и новое не подхватится без перезагрузки. В остальных случаях достаточно перезапустить обновлённые службы или перелогиниться. После обновления systemd, dbus или графического стека перезагрузка тоже не помешает, но не обязательна.
Загружайся с live-USB, делай chroot и смотри журнал. Общая методика диагностики таких проблем описана в статье «Методика решения проблем в Arch Linux».
Схема «скачай, проверь, примени» превращает обновление из лотереи в предсказуемый процесс. pacman -Syuw ловит ошибки сети и зеркал до установки, --print показывает, что приходит, df проверяет место, а pacman -Qkk и journalctl подтверждают, что система в порядке перед перезагрузкой. На большой апдейт потратишь лишние пару минут, зато перезагрузка перестанет быть моментом истины.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии