Tento stručný návod popisuje, jak obnovit poškozený Arch Linux a jeho varianty, jako je EndeavourOS, Manjaro Linux, do předchozího funkčního stavu.
Onehdy jsem provedl úplný upgrade systému pomocí příkazu "sudo pacman -Syu"
a skončil s nefunkčním systémem Arch Linux.
Můj Arch Linux odmítl nabootovat do grafického režimu a stále zobrazoval chybové zprávy:"dependency failed multi-user system"
a "dependency failed for graphical interface"
.
Jedinou možností, kterou jsem měl, je přihlásit se do režimu jednoho uživatele a pokusit se vrátit aktualizované balíčky na jejich předchozí verze.
Z režimu jednoho uživatele jsem zkusil následující:
- Zkoušel jsem nainstalovat balíčky z oficiálních repozitářů, ale nešlo to. Protože moje síťová karta není rozpoznána v režimu jednoho uživatele, takže internet nefungoval.
- "downgrade" příkaz nefunguje. netuším proč. Takže jsem nemohl downgradovat žádné balíčky na jejich předchozí verze. Jednoduše se zobrazila chybová zpráva
"sudo pacman command is not found"
. - Zkuste tedy znovu downgradovat všechny balíčky na konkrétní datum . Ani to nepomohlo. Mám stejnou chybu jako výše, tj.
"sudo pacman command is not found"
.
Byl jsem bezmocný. Jediné, co mám, je Tablet PC s připojením k internetu. Po rozsáhlém hledání na wiki a fórech Arch Linuxu mě napadlo dát poslední pokus.
Rozhodl jsem se downgradovat všechny balíčky, které byly dříve aktualizovány jeden po druhém. Protože "pacman -Syu"
příkaz aktualizoval mnoho balíčků, takže jsem nemohl přesně potvrdit, který balíček způsobuje problém.
Pokud jste v podobné situaci, tento průvodce vám může pomoci obnovit váš poškozený Arch Linux do předchozího funkčního stavu.
Obnovit poškozený Arch Linux do předchozího funkčního stavu
1. Nejprve se přihlaste v režimu jednoho uživatele. Chcete-li tak učinit, zadejte "e"
když uvidíte nabídku Grub.
2. Poté najděte řádek, který začíná slovem linux
:
linux /boot/vmlinuz-linux root-UUID=d474f2-e6a2-4cc3-9899-aa98af13 rw quiet
Na konci výše uvedeného řádku napište následující řádek:
init=/bin/bash
Podívejte se na následující snímek obrazovky.
3. Poté stiskněte F10
nebo CTRL+X
pokračovat. Po několika sekundách přejdete do režimu jednoho uživatele.
4. Zadejte následující příkaz pro připojení root (/)
souborový systém v režimu čtení/zápisu.
mount -n -o remount,rw /
5. Nyní musíte zjistit, kdy jste provedli úplnou aktualizaci systému. Můžete to snadno najít ve svém pacman.log
soubor. Tento soubor ukládá všechny záznamy pacmana, které jste udělali v minulosti.
tail -n 200 /var/log/pacman.log | less
Zde -n 200
zobrazí posledních 200
řádků ve vašem pacman.log
soubor. Protože můj pacman.log
soubor má tolik položek.
Jak možná víte, příkaz tail zobrazí pouze posledních 10 záznamů. Takže nahraďte 200
s vaším vlastním číslem, abyste mohli projít pacman.log
soubor. A poslal jsem výstup "tail"
příkaz "less"
příkaz k zobrazení výsledků stránku po stránce.
6. Po procházení souboru pacman.log jsem našel přesný čas úplného upgradu systému. Zkontrolujte časové razítko na níže uvedeném snímku obrazovky (Omlouváme se za nízkou kvalitu obrázku).
Spustil jsem "sudo pacman -Syu"
příkaz ve 12:06 .
Jak můžete vidět, "pacman -Syu"
příkaz aktualizoval 40+
balíčky.
7. Protože nemohu použít "downgrade"
příkaz a downgrade všech balíčků na jakékoli konkrétní datum, neměl jsem jinou možnost než downgradovat všechny aktualizované balíčky jeden po druhém pomocí "pacman -U"
příkaz z mezipaměti. Jak již víte, pacman
uloží všechny stažené balíčky do /var/cache/pacman/pkgs/
složka.
8. Poznamenal jsem si všechny aktualizované balíčky ze snímku obrazovky a jeden po druhém je downgradoval na starší verzi z mezipaměti, jak je uvedeno níže.
pacman -U /var/cache/pacman/pkg/qt5-base-5.9.1-3-x86_64.pkg.tar.xz
Výše uvedený příkaz nainstaluje qt5-base
balíček ze složky mezipaměti. Trvalo mi skoro půl hodiny, než jsem downgradoval všechny balíčky.
9. Pokud jste již vymazali složku mezipaměti, nemáte na výběr. Přeinstalace může být jedinou možností. Doporučuji vám tedy ponechat si v mezipaměti alespoň dvě staré verze, abyste je mohli obnovit, pokud se v nových balíčcích vyskytnou nějaké problémy.
10. Po downgradu všech balíčků zadáním následujícího příkazu použijte změny a spusťte Arch Linux do normálního režimu.
exec /sbin/init
11. Nyní se mohu bez problémů přihlásit na plochu Arch Linuxu. Myslím, že bych to měl pár dní vydržet a pak zkusit aktualizaci znovu, až to bude opraveno.
Pokud máte čas a trpělivost, přejděte na nižší verzi jednoho balíčku a spusťte "exec /sbin/init"
spusťte systém do normálního režimu a zkontrolujte, zda problém vyřeší.
Pokud ne, zkuste jiný balíček. Toto opakujte, dokud nenajdete problematický balíček. Pak jednoduše opusťte problematický balíček a aktualizujte všechny ostatní balíčky.
Některým z vás se může zdát, že tato metoda není tak účinná a složitá. Ale takto jsem obnovil svůj rozbitý systém Arch Linux.
Možná znáte jiné snadné způsoby než tuto metodu. Pokud znáte nějaké takové snadné metody, dejte mi prosím vědět v sekci komentářů níže. Příručku podle toho zkontroluji a aktualizuji.
Další užitečné výukové programy pro Arch Linux na tomto blogu:
- Povolte paralelní stahování v Pacman v Arch Linuxu
- Načtení nejnovějšího seznamu zrcadel pomocí Reflector v Arch Linuxu
- Doporučený způsob čištění mezipaměti balíčků v Arch Linuxu
- Jak ignorovat balíček z upgradu v Arch Linuxu
- Jak opravit chybu „pacman:chyba při načítání sdílených knihoven“ v Arch Linuxu
Související čtení:
- Jak opravit poškozený operační systém Ubuntu bez jeho přeinstalace