Сразу к делу: переустановить все пакеты в Arch Linux можно одной командой pacman -Qqn | pacman -S -. Она берёт список явно установленных пакетов и переустанавливает каждый из них той же версии. Это крайняя мера для лечения битых пакетов: когда после неудачного обновления пропали библиотеки, файлы в /usr удалены или повреждены, а точечный ремонт не помогает. Но сначала проверь масштаб бедствия через pacman -Qkk: возможно, хватит переустановки пары пакетов.
Битые пакеты почти всегда появляются после неудачного обновления или ручного вмешательства. Самые частые сценарии:
pacman -Syu. База pacman успела обновиться, а файлы на диск не записались./usr. Удаление или перезапись файлов вручную, например rm в системных каталогах или замена бинарника на скачанный из интернета.Во всех этих случаях pacman считает пакеты установленными, но реальные файлы на диске не совпадают с базой. Отсюда ошибки вроде «не найдена библиотека» или «нет такого файла» при запуске программ. Чем больше пакетов затронуто, тем хаотичнее выглядит поломка: падают то одни программы, то другие, и чинить всё по одному не получается.
Полностью избежать битых пакетов нельзя, но риск снижается, если не прерывать обновления и не трогать файлы в /usr руками.
Переустановка всех пакетов решает одну задачу: вернуть файлы пакетов в состояние, которое записано в базе pacman. Она нужна, когда:
/usr удалены или заменены вручную.Если повреждён один-два пакета, полная переустановка избыточна. Она оправдана, когда проблема размазана по всей системе и точечный ремонт превращается в бесконечный список.
Важно понимать: переустановка всех пакетов не первое действие, а последнее. Сначала диагностика, потом точечный ремонт, и только если не помогло, полная переустановка.
pacman -Qkk сверяет файлы каждого пакета с базой. Без аргументов проверяются все пакеты. Для каждого пакета вывод показывает, сколько файлов пропало (missing) и сколько изменено (altered).
pacman -Qkk | grep -v ' 0 missing\| 0 altered'
Фильтр оставляет только пакеты с проблемами. Если вывод пустой, все файлы на месте.
Разница между -Qk и -Qkk:
pacman -Qk: быстрая проверка, только пропавшие файлы, без сверки содержимого.pacman -Qkk: полная проверка, сверяет содержимое файлов с хешами из базы.Проверка всех пакетов занимает время, но это самый надёжный способ узнать, что именно сломано. Запускай её первой, до любых переустановок.
Если pacman -Qkk показал конкретные пакеты, переустанови их точечно:
pacman -S имя-пакета
Если пакет уже установлен, pacman -S переустановит его той же версии, а не обновит. Источник: кеш в /var/cache/pacman/pkg или репозиторий. Это быстро и безопасно. Для пакетов из AUR пересобери их через yay или paru.
Точечная переустановка лечит большинство случаев. Полная переустановка нужна, когда повреждений много или они разбросаны по всей системе.
Стандартный сниппет из ArchWiki:
pacman -Qqn | pacman -S -
Разбор по частям:
pacman -Qqn выводит список явно установленных пакетов, без зависимостей.- в pacman -S - говорит pacman читать список пакетов из stdin.Это покрывает всё, что ты ставил руками. Зависимости не трогаются, но они обычно целы, если повреждения начались с явных пакетов.
Нюанс с AUR: pacman -Qqn включает AUR-пакеты в список, но pacman не найдёт их в репозиториях и выдаст ошибку. Это не страшно: остальные пакеты переустановятся, а AUR-пакеты пересобери отдельно.
Список из pacman -Qqn снимается с текущей базы. Если база повреждена, список может быть неполным. В этом случае сначала почини базу, потом переустанавливай.
pacman скачивает пакеты, распаковывает их поверх существующих файлов и запускает хуки: пересборку initramfs, обновление кеша шрифтов, ldconfig и другие. После переустановки ядра или драйверов ничего не нужно делать вручную, хуки отработают сами.
Переустановка не обновляет пакеты. pacman -S - ставит те же версии, что уже стоят. Если хочешь заодно обновиться, сначала переустанови, потом выполни pacman -Syu.
Переустановка не чинит конфиги и не возвращает удалённые файлы из /etc и /home. Она возвращает только файлы пакетов. Если проблема в конфиге, переустановка не поможет.
Просто запусти команду ещё раз. pacman продолжит с того места, где остановился. Если pacman ругается на повреждённую базу, разбор ошибок вроде «invalid or corrupted database» есть в статье «Ошибка pacman: invalid or corrupted database».
Если явных пакетов мало, а система развалилась целиком, переустанови всё:
pacman -Qq | pacman -S -
pacman -Qq выводит все установленные пакеты, включая зависимости. Это полный набор. Процесс дольше, но лечит и зависимости, если они тоже пострадали.
Моя рекомендация по порядку действий:
pacman -Qkk: найди повреждённые пакеты.pacman -S.pacman -Qqn | pacman -S -: все явные пакеты.pacman -Qq | pacman -S -: весь набор.Не начинай с полной переустановки. Сначала дешёвые шаги, потом дорогие.
Переустановка всех пакетов скачивает сотни файлов, поэтому подготовься:
pacman -Syy. Иначе pacman может не найти версии пакетов./var/cache/pacman/pkg, при переустановке всех пакетов кеш вырастет на несколько гигабайт. Команда df -h покажет свободное место.Если работаешь по SSH, обрыв соединения прервёт процесс. Запусти переустановку внутри tmux или screen, чтобы она пережила разрыв связи.
После переустановки прогони проверку ещё раз:
pacman -Qkk | grep -v ' 0 missing\| 0 altered'
Пустой вывод значит, что все файлы на месте. Затем перезагрузись и проверь, что система работает: запусти пару программ, посмотри journalctl -b на ошибки.
Если какая-то программа всё ещё падает, посмотри её вывод в терминале: часто он прямо указывает на недостающую библиотеку. Проверь, какому пакету принадлежит этот файл: pacman -Qo /путь/к/файлу.
Если проблемы остались, дело может быть не в файлах пакетов, а в конфигах или ядре. Общая методика диагностики описана в статье «Методика решения проблем в Arch Linux».
Нет. pacman переустанавливает файлы пакетов, но изменённые конфиги в /etc не трогает: для них создаются файлы .pacnew. Личные файлы в /home вообще не затрагиваются.
pacman -Qqn включает их в список, но pacman не найдёт их в репозиториях и выдаст ошибку. Остальные пакеты переустановятся, а AUR-пакеты пересобери отдельно через yay или paru.
pacman -Qqn показывает только явно установленные пакеты, те, что ты ставил руками. pacman -Qq показывает все пакеты, включая зависимости. Для лечения обычно хватает -Qqn.
Сама операция безопасна: pacman ставит те же версии, что уже стоят. Главный риск, прерванный процесс из-за отключения питания или обрыва сети. Поэтому перед стартом проверь питание и сеть.
Нет. Переустановка через pacman требует работающего pacman. Если pacman не запускается, сначала почини его вручную: скачай пакет pacman и распакуй его поверх системы. После этого переустановка остальных пакетов заработает.
Переустановка всех пакетов лечит битые файлы, когда точечный ремонт не помогает. Начни с pacman -Qkk, чтобы понять масштаб, переустанови повреждённые пакеты, и только в тяжёлых случаях запускай pacman -Qqn | pacman -S -. Полный набор через pacman -Qq | pacman -S - оставь на самый край. После переустановки проверь результат тем же pacman -Qkk и перезагрузись.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии