Это краткое руководство описывает, как восстановить сломанную Arch Linux и ее разновидности, такие как EndeavourOS, Manjaro Linux, в прежнее рабочее состояние.
На днях я выполнил полное обновление системы с помощью команды “sudo pacman -Syu”, и в итоге получил сломанную систему Arch Linux.
Мой Arch Linux отказался загружаться в графическом режиме и продолжал выдавать сообщения об ошибках: “dependency failed multi-user system” и “dependency failed for graphical interface”.
Единственный вариант, который у меня был, это войти в однопользовательский режим и попытаться откатить обновленные пакеты до их предыдущих версий.
В однопользовательском режиме я попробовал следующее:
- Я попытался установить пакеты из официальных репозиториев, но не смог. Потому что моя сетевая карта не распознается в режиме одного пользователя, поэтому Интернет не работал.
- Команда “downgrade” не работает. Я понятия не имею, почему. Поэтому я не смог обновить ни один пакет до предыдущей версии. Просто появилось сообщение об ошибке “sudo pacman command is not found”.
- Поэтому я снова попытался понизить версию всех пакетов до определенной даты. Это тоже не помогло. Я получил ту же ошибку, что и выше, т.е. “sudo pacman command is not found”.
Если вы оказались в подобной ситуации, это руководство может помочь вам восстановить ваш сломанный Arch Linux до прежнего рабочего состояния.
Восстановление работоспособности Arch Linux
1. Сначала войдите в систему в режиме одного пользователя.
Для этого введите “e” при появлении меню Grub.
2. Затем найдите строку, которая начинается со слова linux:
linux /boot/vmlinuz-linux root-UUID=d474f2-e6a2-4cc3-9899-aa98af13 rw quiet
init=/bin/bash
Для справки посмотрите следующий снимок экрана.
3. Затем нажмите F10 или CTRL+X, чтобы продолжить. Через несколько секунд вы перейдете в однопользовательский режим.
4. Введите следующую команду для монтирования корневой (/) файловой системы в режиме чтения/записи.
mount -n -o remount,rw /
5. Теперь вам нужно найти, когда вы выполнили полное обновление системы.
Вы можете легко найти это, просмотрев файл pacman.log.
В этом файле сохраняются все записи pacman, которые вы делали в прошлом.
tail -n 200 /var/log/pacman.log | less
Здесь -n 200 отобразит последние 200 строк в вашем файле pacman.log.
Потому что в моем файле pacman.log очень много записей.
Как вы, возможно, знаете, команда tail отображает только последние 10 записей.
Поэтому замените 200 на свое собственное число, чтобы просмотреть файл pacman.log.
Я передал вывод команды “tail” команде “less”, чтобы отобразить результаты постранично.
6. Просмотрев файл pacman.log, я обнаружил точное время полного обновления системы.
7. Поскольку я не могу использовать команду “downgrade” и понизить все пакеты до определенной даты, у меня не было выбора, кроме как понизить все обновленные пакеты по одному с помощью команды “pacman -U” из кэша.
Как вы уже знаете, pacman сохраняет все загруженные пакеты в папке /var/cache/pacman/pkgs/.
8. Я отметил все обновленные пакеты на скриншоте и понизил их один за другим до более ранней версии из кэша, как показано ниже.
pacman -U /var/cache/pacman/pkg/qt5-base-5.9.1-3-x86_64.pkg.tar.xz
Приведенная выше команда установит пакет qt5-base из папки cache.
У меня ушло почти полчаса на понижение версии всех пакетов.
9. Если вы уже очистили папку cache, у вас нет выбора.
Переустановка может быть единственным вариантом.
Поэтому я рекомендую вам сохранить в кэше по крайней мере две старые версии, чтобы вы могли восстановить их, если возникнут проблемы с новыми пакетами.
10. После обновления всех пакетов введите следующую команду, чтобы применить изменения и запустить Arch Linux в нормальном режиме.
exec /sbin/init
11. Теперь я могу войти на свой Arch Linux без каких-либо проблем.
Думаю, мне стоит подождать пару дней, а затем попробовать обновить систему снова, когда все будет исправлено.
Если у вас есть время и терпение, понизите один пакет и запустите “exec /sbin/init” для загрузки системы в нормальный режим и проверьте, решит ли это проблему.
Если нет, попробуйте другой пакет.
Повторяйте это до тех пор, пока не найдете проблемный пакет. Затем просто оставьте проблемный пакет и обновите все остальные пакеты.
Некоторые из вас могут посчитать этот метод не очень эффективным и сложным. Но именно так я восстановил свою сломанную систему Arch Linux.
Возможно, вы знаете какие-то другие простые способы, кроме этого метода. Если вы знаете такие простые способы, пожалуйста, сообщите мне об этом в разделе комментариев ниже. Я проверю и обновлю руководство соответствующим образом.