Automatisch opschonen van de pacman en yay cache in Arch Linux
Een vertaalde beschrijving voor het script voor op Arch Linux (gebaseerde) distributies: het automatiseren van het opschonen van pakketcache.(Het originele in het Engels geschreven artikel is hier te lezen)
Pacman-cache opschonen
Pacman is de officiële pakketbeheerder voor Arch.
Wanneer u het gebruikt om een pakket uit officiële repositories te installeren, wordt het gedownload en opgeslagen in het systeem (met name in /var/cache/pacman/pkg
), waarna het geïnstalleerd.
De gedownloade bestanden blijven bewaard voor het geval het in de toekomst opnieuw geinstalleerd moet worden, bijvoorbeeld , als we het hebben verwijderd of als we een nieuwere versie installeren welke niet werkt zoals verwacht en een downgrade gewenst is.
De pakketcache wordt echter nooit automatisch opgeschoond, en wanneer we pakketten installeren en upgraden, wordt deze groter en groter.
We zouden kunnen wachten tot de schijf vol raakt, en het dan pas opschonen... of we laten het automatisch opschonen, waarbij we de bestanden bewaren die nuttig kunnen zijn.
Pacman biedt een commando voor het opschonen van de cache van niet-geïnstalleerde pakketten, pacman -Sc,
en voor het opschonen van de cache voor elk pakket: pacman -Scc
.
Het kan echter interessant zijn om het op te schonen en daarbij de twee nieuwste versies van elk pakket (de geïnstalleerde en de vorige) te behouden.
Zo houden we altijd een vorige en de huidige versie voor elk pakket.
paccache
We kunnen dit bereiken met paccache
, een script uit pacman-contrib
package.
Via paccache -rk2
, maken we de pakketcache schoon en behouden alleen de twee nieuwste versies van elk pakket.
Verder kunnen we de -u
optie gebruiken om alleen de cache van niet-geïnstalleerde pakketten op te schonen.
Wanneer we bijvoorbeeld de twee nieuwste versies willen behouden voor geïnstalleerde pakketten en alleen de nieuwste voor niet-geïnstalleerde pakketten (voor het geval we ze in de toekomst opnieuw willen installeren, bijvoorbeeld om afhankelijkheden van AUR-pakketten te maken), kunnen we uitvoeren:
Yay cache opruimen
yay is een AUR-helper en een pacman-wrapper, een programma dat zijn eigen functies en enkele aanvullende gebruikt, in dit geval is dat het installeren van pakketten van de AUR, de community-gestuurde repository voor Arch-gebruikers.
AUR slaat geen binaire pakketten op, maar wel scripts genaamd PKGBUILD
s
Deze zullen de bron- of binaire bestanden van een externe bron downloaden en het pacman-pakket maken.
YAY doet dit automatisch, maar zal in de cache (in ~/.cache/yay
) niet alleen het gemaakte pakket opslaan, maar ook originele bron- of binaire bestanden en extra bestanden als tijdens het proces gegenereerd.
We moeten er rekening mee houden dat elk pakket zijn eigen cachedirectory heeft.
YAY heeft een operatie die -Sc
lijkt op die van Pacman, maar nogmaals, paccache
lijkt interessanter.
Dit script heeft een optie -c
voor het specificeren van de cachelocatie, zodat we naar de cachemap kunnen schrijven voor elk pakket dat met yay is geïnstalleerd.
Als we bijvoorbeeld de yay-cache willen opschonen met de twee nieuwste versies voor geïnstalleerde pakketten en niet voor niet-geïnstalleerde pakketten, kunnen we het volgende uitvoeren:
Deze opdracht verwijdert echter alleen pacman-pakketten, maar geen andere bestanden.
Het kan interessant zijn om de bron- of binaire bestanden van de geïnstalleerde versie te behouden (voor het geval we het pakket upgraden en dezelfde gebruiken als de vorige versie) en de bestanden uit de git-repository van het AUR-pakket (anders krijg je een foutmelding wanneer we proberen het pakket te upgraden), maar niet de rest van de bron- of binaire bestanden, noch welke die zijn gegenereerd tijdens het maken van het pakket.
Bash-script voor het opschonen van beide caches
Tip: schakel de batchinstall
optie voor yay in om extra downloads te vermijden bij het upgraden van AUR-pakketten.
Installeer eerst pacman-contrib
het pakket als je het nog niet hebt gedaan:
Dit bash-script, geschreven voor het eenvoudig opschonen van zowel pacman- als yay-caches, is gebaseerd op het GitHub Gist scipt, gemaakt door luukvbaal
|
|
Het reinigt beide caches m.b.v. paccache
, waarbij de twee nieuwste versies voor geïnstalleerde pakketten behouden blijven,
- de nieuwste versie voor niet-geïnstalleerde pakketten van officiële repositories en
- niets voor niet-geïnstalleerde pakketten van AUR,
- het verwijdert de mappen van niet-geïnstalleerde pakketten van AUR die zich in yay cache bevinden en
- extra bestanden uit de mappen van geïnstalleerde pakketten,
- met uitzondering van de bestanden die worden bijgehouden door git, de pacman-pakketten en de bron- of binaire bestanden van de geïnstalleerde versie.
We kunnen het script opslaan in ~/.local/bin
, of in welke map dan ook in uw $PATH
, zodat we het kunnen uitvoeren door te typen
Pacman-hook voor het automatiseren van cache-opschoning
Dit script kan dan wel handig zijn voor het opschonen van pacman- en yay-caches, maar we hebben het automatiseringsgedeelte nog niet bereikt.
Om automatisering te implementeren, is een pacman hook nodig, een bestand dat een commando uitvoert na het installeren, verwijderen of upgraden van bepaalde pakketten.
In dit geval wordt het script uitgevoerd na het verwijderen of upgraden van een pakket.
Het wordt niet uitgevoerd na het installeren van een pakket, omdat yay-installaties afhankelijkheden maken wanneer dat nodig is en het uitvoeren van het script de benodigde bestanden zou verwijderen en daarom zou de installatie mislukken.
|
Vergeet niet het Exec
pad te wijzigen, zodat het naar het juiste path van de gebruiker wijst, waar het script is opgeslagen.
Het hook-bestand opslaan in /usr/share/libalpm/hooks
, zodat het wordt geactiveerd bij gebruik van pacman.