Pokud jste nezačali s minimální instalací Fedory a nedáváte si velký pozor na to, co instalujete z repozitářů, pravděpodobně máte na disku spoustu balíčků, které ve skutečnosti vůbec nepoužíváte. Kromě toho, že zbytečně zabírají místo, jejich novější verze se stahují při aktualizacích a ty pak spotřebují více času a síťového provozu. Obecně všechny operace nad rpm databází jsou pak pomalejší, protože se zpracovává více dat.

Pokud byste si vypsali seznam balíčků setříděný podle velikosti a zkoušeli ty největší odinstalovat pomocí rpm nebo dnf, pravděpodobně zjistíte, že na většině z nich závisí jiné balíčky. Kontrolovat a odinstalovávat je po jednom by bylo velmi zdlouhavé. Pokud byste si naopak vypsali balíčky, na kterých nic nezávisí, například pomocí nástroje package-cleanup, tak zase nepoznáte, které z nich je třeba odinstalovat, aby se jiné uvolnily.

Pro tuto práci byl navržen rpmreaper. Je to malý konzolový nástroj, který umožňuje pohodlně procházet seznam nainstalovaných balíčků a jejich závislostí. Nepotřebné balíčky, na kterých nic nezávisí, mohou být označeny k odinstalaci. Zásadní výhodou je, že označení jednoho balíčku okamžitě mění stav u závisejících balíčků a ty mohou být potom také označeny k odstranění. Například po označení balíčku s nějakou aplikací se uvolní balíčky knihoven, které používala jako jediná. Takto je možné rychle projít a odstranit velké množství balíčků.

Obrazovka po startu programu

Obrazovka po startu programu

Pokud máte v plánu odstraňovat balíčky, rpmreaper je nutné spustit pod uživatelem root. Pro první seznámení s programem a jeho ovládáním však může být vhodnější ho pustit pod obyčejným uživatelem, nemůže tak dojít k žádným škodám. Po spuštění se načte rpm databáze a zobrazí seznam nainstalovaných balíčků. První dva sloupce jsou příznaky a velikost, podle kterých jsou balíčky setříděny. Příznaky také určují barvu řádků pro lepší orientaci. Příznaky balíčků jsou následující:

  • L (list): Na balíčku nezávisí žádné neoznačené balíčky a je možné ho označit k odstranění.
  • l (dočasný list): Balíček poskytuje něco, co poskytují i jiné balíčky a nějaký neoznačený balíček na tom závisí. Balíček je možné označit, ale jiný může příznak l ztratit.
  • D (označený): Balíček bude odstraněn.
  • o (cyklus): Balíček je součástí nějakého cyklu závislostí.
  • B (rozbitý): Některé závislosti balíčku nejsou splněny.
  • b (dočasně rozbitý): Balíček má některé závislosti označené k odstranění, ale sám označený není.

Program se ovládá klávesami. Klávesa F1 nebo F2 zobrazí manuálovou stránku s kompletním popisem ovládání. Základní klávesy jsou vypsány také v prvním řádku obrazovky programu. Mezi nejdůležitější klávesy patří:

  • , , pohybují kurzorem.
  • TAB, SHIFT+TAB skočí na další/předchozí list v seznamu.
  • D označí balíček (pokud je to list) k odstranění.
  • C odstraní všechny označené balíčky.
  • R zobrazí nebo schová seznam balíčků, na kterých vybraný balíček závisí.
  • B zobrazí nebo schová seznam balíčků, které závisí na vybraném balíčku.
  • I zobrazí podrobnější informace o balíčku, včetně seznamu souborů, které obsahuje. To se hodí u balíčků, kde ze samotného názvu nejde poznat k čemu vlastně jsou a jestli jsou skutečně potřeba.
  • Q ukončí program s dotazem pro odstranění označených balíčků.
  • X okamžitě ukončí program bez dalších dotazů.

Jedním způsobem práce s programem při čištění je zkoumat balíčky v horní části hlavního seznamu, kde jsou listy, po označení nějakého balíčku rozbalit jeho závislosti klávesou R, ty prozkoumat a označit jak je potřeba, a rekurzivně pokračovat dokud je co označovat. Pokud jste nějaký označili omylem, klávesou U můžete označení odstranit.

Průchod závislostmi shora dolů

Průchod závislostmi shora dolů

Jiným možným způsobem práce je soustředit se nejdříve na největší balíčky, i když to zatím nejsou listy. Klávesou B můžete prozkoumat strom balíčků, které na vybraném balíčku závisí a zvážit jestli by šly odstranit, aby se ten balíček uvolnil. Klávesou SHIFT+B můžete zobrazit všechny balíčky, co na něm závisí přímo i nepřímo, najednou v jednom seznamu. Označit je můžete postupně po jednom klávesou D nebo klávesou SHIFT+E se dají označit všechny najednou. Toto je nejsilnější označovací příkaz a měl by se používat opatrně. Kdyby se například provedl nad glibc, což je nejdůležitější knihovna v systému, tak by se označila většina nainstalovaných balíčků. V takovém případě by bylo lepší ukončit rpmreaper klávesou X a začít nanovo.

Průchod závislostmi zdola nahoru

Průchod závislostmi zdola nahoru

Zvláštním případem jsou balíčky, které přes jiné závisí samy na sobě. Bez porušení závislostí se tyto balíčky nemohou stát listy a bylo by snadné je přehlédnout při čištění. Závislosti zde už netvoří strom, ale obecnější graf, a cykly v něm jsou problematické při instalaci a odinstalaci. Při vývoji Fedory je snaha cykly odstraňovat, například rozdělením některého balíčku v cyklu na více podbalíčků, ale někdy to není až tak jednoduché a spousta cyklů zůstává v repozitářích.

Balíčky, které jsou součástí nějakého cyklu mají příznak o a u závislostí, přes které vede tento cyklus je zobrazen symbol +. Cyklus by se měl odstraňovat vždy celý najednou. Protože klávesa D umožňuje označit jen listy, musí se cyklus nejdříve rozbít silou v některém místě klávesou SHIFT+D. Pak už je možné postupně označit ostatní balíčky, které byly součástí cyklu. Jinou možností je použít klávesu SHIFT+E a označit je všechny najednou.

Cyklus v závislostech

Cyklus v závislostech

Nakonec, když jste spokojeni s výběrem balíčků, klávesou C dáte příkaz k jejich odstranění, potvrdíte akci klávesou Y a už si jen můžete vychutnat, jak je rpm odstraňuje.

Odinstalace označených balíčků

Odinstalace označených balíčků

Na závěr pár tipů. Dávejte pozor na balíčky, které jsou nutné pro základní funkce systému, jako je kernel, systemd, rpm, dnf nebo NetworkManager. Po jejich odinstalování by už bylo těžké je znovu nainstalovat. Před větším čištěním se doporučuje uložit si seznam všech nainstalovaných balíčků do souboru, např. pomocí rpm -qa. V případě, že by nějaký program skrytě závisel na něčem, co se odinstalovalo, a pak záhadně přestal pracovat, nebo něco chybělo, ale nevěděli jste název balíčku, tak je tu alespoň možnost nainstalovat vše zpět.