Kořenový oddíl je plný? Nepropadejte panice, nejprve vymažte Pacmanovu mezipaměť!

Po nějaké době Vás systém může upozornit, že Váš kořenový oddíl je téměř plný.

Můžete z toho panikařit a budete buď v pokušení provést přeinstalaci a zvětšit svůj kořenový oddíl, nebo ještě hůř, zkusit použít Gparted ke zmenšení oddílu, přesunutí a zvětšení kořenového oddílu.

POZOR!!! Nedělejte to, zejména druhou možnost, protože to může narušit Váš systém. Moje rada je, jen zůstat v klidu, existuje mnohem méně radikální řešení tohoto problému.

/var/cache/pacman/pkg/

Když nainstalujete balíček pomocí Pacmana, uloží všechny stažené balíčky do /var/cache/pacman/pkg/ složky. Správce balíčků ve výchozím nastavení automaticky neodstraňuje staré a odinstalované balíčky a po chvíli může velikost mezipaměti spotřebovat značné množství místa na vašem HDD nebo SDD.

Naštěstí má Pacman vestavěnou funkci pro vymazání mezipaměti, zadáním sudo pacman -Sc bude mezipaměť zcela vymazána. Problém vyřešen, ne?!?

No… ano i ne. Ano, vaše mezipaměť je vymazána a budete mít znovu volné místo na oddílu, yay…

Takže, v čem je problém, můžete se mě zeptat? Problém nyní je, že pomocí výše popsaného příkazu jste vymazali celou mezipaměť, včetně mezipaměti nainstalovaných balíčků. Tato mezipaměť je potřeba, když aktualizace balíčku nefunguje a musíte přejít na nižší verzi, dokud nebude problém vyřešen upstreamem. Nejedná se o žádnou velkou katastrofu, protože balíček můžete také downgradovat pomocí repozitáře Arch, ale vrátit se k místní mezipaměti je mnohem jednodušší.

Řešení

Nebojte se, existuje řešení a jmenuje se paccache. Nyní, než otevřete svůj terminál a použijete yay k vyhledání tohoto šikovného balíčku, neobtěžujte se, protože to není balíček, je již přítomen ve vašem systému.

Skript Paccache poskytuje samotný balíček Pacman. Nemusíte se tedy obtěžovat instalačními kroky. Paccache ve výchozím nastavení zachová tři nejnovější verze balíčků. Kromě tří nejnovějších verzí balíčků odstraní všechny verze každého balíčku uložené v mezipaměti bez ohledu na to, zda jsou nainstalovány nebo ne.

Jak to používat

Chcete-li zkontrolovat, kolik balíčků je v paccache, zadejte:

              $ sudo ls /var/cache/pacman/pkg/ | wc -l
          

Tím získáte počet balíčků, které jsou ve vaší mezipaměti, pokud chcete vědět, kolik místa mezipaměť zabírá, zadejte:

              $ du -sh /var/cache/pacman/pkg/
          

Nyní vám systém říká, jak velká je velikost vaší mezipaměti.

Nyní můžete vymazat mezipaměť, kromě posledních tří verzí každého balíčku zadáním:

              $ sudo paccache -r
          

V závislosti na Vaší historii mezipaměti může poskytnout spoustu místa v kořenovém oddílu, ale teď jste u toho, proč nevymazat mezipaměť z vašich odinstalovaných balíčků?

Chcete-li to provést, zadejte následující:

            $ sudo paccache -ruk0         
          

U v tomto příkazu znamená všechny odinstalované balíčky a v závislosti na Vaší historii odinstalovaných balíčků to také může Vašemu systému vrátit spoustu místa. Další metodou, jak vymazat odinstalované balíčky, je použití:

            $ sudo pacman -Sc
          

Nebo pro úplné odstranění použijte:

            $ sudo pacman -Scc
          

Jen buďte opatrní s čištěním mezipaměti a balíčků pomocí tohoto příkazu, zdá se lákavé jej použít, ale jakmile je smazán, není cesty zpět.

Automatické odstranění mezipaměti

Tento úkol můžete automatizovat pomocí pacman hooks. Pacman hook automaticky vyčistí mezipaměť balíčku po každé transakci pacmana.

Chcete-li tak učinit, vytvořte soubor /etc/pacman.d/hooks/clean_package_cache.hook takto:

              $ sudo mkdir -p /etc/pacman.d/hooks
          

                $ sudo nano /etc/pacman.d/hooks/clean_package_cache.hook    
          

Poté přidejte následující řádky:

                    [Trigger]
                    Operation = Upgrade
                    Operation = Install
                    Operation = Remove
                    Type = Package
                    Target = *
                    [Action]
                    Description = Cleaning pacman cache...
                    When = PostTransaction
                    Exec = /usr/bin/paccache -r
          

Zavřete a uložte stisknutím CTRL + x a od této chvíle Váš systém automaticky vymaže mezipaměť po každé aktualizaci, odstranění nebo aktualizaci pacmana.

EDIT: Od roku 2020 EndeavourOS se dodává s automatickým skriptem, který je součástí aplikace Welcome, která tyto operace provádí několika kliknutími myši.

Návod je převzat z Discovery na EndeavourOS vydán 30. března 2020.

Kankys 26.8.2024