Srp 03

Automatické čistenie cache

Tento článoček bude o vytvorení tzv. posttransakčného háku, ktorý zabezpečí automatické čistenie balíčkov vo vyrovnávacej pamäti. Uvedieme si dva príklady. Prvý priamym vypísaním príkazov v súbore. Druhý bude pomocou skriptu.

 

 

 

Inštalácia potrebného balíčku

Toto automatické čistenie sa vykonáva pomocou paccache, ktorý je súčasťou pacman-contrib. Nachádza sa v oficiálnych repozitároch:

sudo pacman -S pacman-contrib

Pomoc:

paccache --help
paccache -h

 

Vytvorenie posttransakčného háku

Vytvorenie posttransakčného háku priamym príkazom

Pomocou nejakého textového editoru si vytvoríme súbor pod názvom paccache-clear.hook v /etc/pacman.d/hooks. Sú potrebné administrátorské práva. Názov súboru si môžeme zvoliť podľa seba. Podmienkou je prípona .hook:

sudo gedit /etc/pacman.d/hooks/paccache-clear.hook

A vložíme doň tento text:

[Trigger]
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Removing old cached packages
When = PostTransaction
Exec = /usr/bin/env bash -c "/usr/bin/paccache -vrk3; /usr/bin/paccache -vruk0"

vrk3 je ukecané ponechanie posledných troch verzií oficiálneho balíčku
vruk0 je ukecané odstránenie všetkých odinštalovaných oficiálnych balíčkov

 

Dajú sa pridať aj vlastné cesty ku vyrovnávacej pamäti nejakého programu. Napríklad odstránenie zoznamu otvorených súborov pomocou mpv. Vtedy Exec bude vyzerať takto, kde USER je meno užívateľa a treba ho zmeniť:

Exec = /usr/bin/env bash -c "/usr/bin/paccache -vrk3; /usr/bin/paccache -vruk0; /usr/bin/rm /home/USER/.cache/watch_later -rf"

 

Vytvorenie posttransakčného háku pomocou skriptu

Pomocou nejakého textového editoru si vytvoríme súbor pod názvom paccache-clear.hook v /etc/pacman.d/hooks. Sú potrebné administrátorské práva. Názov súboru si môžeme zvoliť podľa seba. Podmienkou je prípona .hook:

sudo gedit /etc/pacman.d/hooks/paccache-clear.hook

A vložíme doň tento text:

[Trigger]
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Removing old cached packages
When = PostTransaction
Exec = /usr/local/bin/paccache-clear.sh

 

Ako vidno, skript nesie názov paccache-clear.sh a nachádza sa v /usr/local/bin. Jeho obsah:

#!/bin/bash

if [ "$(ls -A /var/cache/pacman/pkg/)" ]; then
 paccache -vrk3 -c /var/cache/pacman/pkg/
fi

if [ "$(ls -A /var/cache/pacman/pkg/)" ]; then
 paccache -vruk0 -c /var/cache/pacman/pkg/
fi

vrk3 je ukecané ponechanie posledných troch verzií oficiálneho balíčku
vruk0 je ukecané odstránenie všetkých odinštalovaných oficiálnych balíčkov

 

Pridanie vlastnej zložky na odstránenie. USER je meno užívateľa, ktoré treba zmeniť:

if [[ -d /home/USER/.cache/ranger ]]; then
 rm /home/USER/.cache/watch_later -rf
fi

 

Na presunutie skriptu do /usr/local/bin sú potrebné administrátorské práva. Dá sa vykonať klikaním alebo cez príkazový riadok. Príkaz môže byť umiestnený napríklad aj v /usr/bin:

sudo cp /cesta/ku/paccache-clear.sh /usr/local/bin/paccache-clear.sh

 

Aby sa skript mohol spúšťať ako program, musíme mu prideliť potrebné práva. Buď klikaním alebo cez príkazový riadok:

chmod a+x /cesta/ku/paccache-clear.sh
sudo chmod a+x /cesta/ku/paccache-clear.sh

 

2 comments

  1. Firefox 61.0 GNU/Linux x64

    A ako by sa zmenil ten parameter -vrk3 pokiaľ by som chcel ponechať iba poslednú verziu balíčku? Snažil som sa to zistiť príkazom man paccache ale man taký príkaz nepoznal (No manual entry for paccache). Tipujem to na -vrk1 ale istotu nemám.

    1. Firefox 63.0 GNU/Linux x64

      Manuálová stránka neexistuje, preto ani v článku nie je spomenutá. Existuje iba pomoc.
      -v je ukecaná varianta, pri ktorej sa zobrazia odstránené balíčky
      -r odstraňuje staré balíčky
      -k hovorí, koľko balíčkov sa má ponechať
      -k1 ponechá jeden balíček

      Takže áno, -vrk1 je to, čo hľadáš.

Napsat komentář

Your email address will not be published.

%d blogerům se to líbí: