Linuxové systémy jsou známé tím, že mohou běžet mnoho let bez reinstalace nebo restartu. Takový systém je ale po letech plný starých nepoužívaných balíčků, různých cache, odkládacích adresářů a dalšího balastu, který jen zabírá místo na disku a třeba v databázi balíčků. Čím víc se systémem experimentujeme a přidáváme do něj aplikace a zdroje, tím víc špíny zůstává v koutech.
Naštěstí máme k dispozici balíčkovací systém, který dokáže identifikovat každý soubor na disku a přiřadit jej ke konkrétnímu balíčku. U balíčků zase můžeme vysledovat jejich závislosti a rozhodnout, zda ten či onen kus software je vůbec ještě v systému potřeba. Pokud známe ty správné příkazy, můžeme to navíc udělat jednoduše a v klidu.
Podobný problém se jistě týká i dalších distribucí, já jako debianista se budu věnovat své oblíbené distribuci. Následující návody jsou proto určeny pro distribuci Debian, ale stejně dobře budou fungovat i v Ubuntu (a dalších derivátech). Konec konců Ubuntu je uvnitř z 93 % Debian.
Dále budu používat utilitu Aptitude, protože je podle (nejen) mého názoru lepší a inteligentnější než apt-get. Je to také jeden z prvních balíčků, které instaluji do cizích počítačů s Ubuntu. Pokud chováte k Aptitude nepřekonatelný odpor a chcete používat apt-get, můžete příkazy ve zde uvedených návodech zaměňovat. Oba programy používají stejnou základní syntaxi.
Vysypání cache balíčkovacího systému
Balíčkovací systém Debianu si všechny stažené balíčky ukládá do adresáře /var/cache/apt/archives
pro případné pozdější použití. Obsah tohoto adresáře s každou aktualizací či doinstalací balíčků roste a roste. Jednou za čas se jej proto vyplatí buďto ručně promazat nebo to nechat na systému:
# aptitude clean
Pokud se vám zdá barbarské mazat celou cache, můžete použít inteligentní mazání, které odstraní ty balíčky, které už stejně nejsou na serverech k dispozici:
# aptitude autoclean
Pokud chcete, můžete v adresáři udržovat pořádek automaticky, abyste na to nemuseli myslet. Uklízečku tam můžete posílat pravidelně. Stačí do souboru /etc/apt/apt.conf.d/10periodic
připsat
APT::Periodic::AutocleanInterval "7";
A apt jednou za týden spustí autoclean
za vás. Můžete také jednoduše omezit velikost, kterou může adresář v systému zabírat (v MB). Ve stejném adresáři je soubor 20archive
a v něm nastavte:
APT::Periodic::MaxSize "500";
Tím zvolíte limit půl gigabajtu.
Odstranění starých balíčků
Pokud od instalace svého systému poctivě používáte Aptitude, máte systém v lepším stavu než s apt-get. Aptitude si totiž udržuje informace o tom, které balíčky jste si explicitně vyžádali k instalaci a které přijely jako závislosti. Pokud některý z vyžádaných balíčků odinstalujete, balíčkovač rovnou nabídne k odstranění i další balíky, které už nejsou potřeba.
Přesto tento systém není vždycky dokonalý a pokud jste míchali Aptitude a apt-get, jste stejně nahraní. Existuje ale šikovný balíček deborphan
, který umí v systému vyhledávat a vypsat sirotky. Stačí jej klasicky nainstalovat a spustit, je to bezpečné.
Program jednoduše vypíše ty balíčky, které podle něj už nejsou v systému potřeba. Obvykle jde o různé knihovny a podpůrné balíčky. Někdy se ale může stát (jako teď mně), že se ve výpisu objeví nějaký užitečný balíček (u mě program qtpfsgui. Protože jej chci zachovat, připíšu ho do souboru /var/lib/deborphan/keep
. Co řádek, to název jednoho balíčku. Od této chvíle je balík ignorován a na výstup deborphanu se nedostane. Vždy doporučuji kontrolovat, co je doporučeno k odinstalaci, abyste se nedočkali překvapení.
Pokud se vám výpis líbí, můžete jím rovnou nakrmit aptitude:
# aptitude remove `deborphan`
Standardně jsou prohledávány jen balíčky v sekci libs
, kde bývá zbytků nejvíce. Můžete ale zvýšit šance své uklízečky a zkusit i další sekce, pomocí parametru --guess-něco
. Možností je celá řada, najdete je v manuálové stránce. Jen namátkou: common, data, debug, dev, doc, kernel, dummy, mono, perl, python, ruby a další. Velmi dobrým kandidátem je sekce data, kde najdete řadu zapomenutých věcí. Můžete také zadat --guess-all
, ale to už si musíte dát velký pozor na to, co má zmizet. Mně to třeba doporučuje odstranit vim-full
, což bych dost nerad.
Až se doporučené balíčky odstraní, spusťte příkaz znovu. Velmi často se odstraněním v první vlně uvolní další závislosti a objeví se další balíčky (často víc, než bylo těch předtím). Abyste systém vyčistili, musíte proceduru několikrát zopakovat, až deborphan
vypíše prázdný výstup.
Poznámka: Deborphan není jediný zástupce „čističů“. Existují i další alternativy jako cruft či debfoster. Vyzkoušejte je, ale buďte při jejich použití opatrní.
Odstranění starých konfigurací
Při klasické odinstalaci ( remove
) balíčku ze systému se standardně nemaže konfigurace. Tak je to zařízeno schválně, protože konfigurace zabírají velmi málo místa a někdy je dobré je mít k dispozici a vrátit se k nim. Občas ale dostanete do správy tak zaneřáděný systém, že je potřeba haldu starých věcí smazat.
Existuje několik způsobů, můžete si na to napsat skriptík, který vyhledá nevyčištěné balíčky a podobně. Nejelegantnější řešení ale spočívá ve využití vyhledávacích vzorů Aptitude, které vám umožní balíčky vyhledat a rovnou na nich pustit správnou akci ( purge
). Před takovou změnou určitě proveďte zálohu konfiguračních souborů.
# aptitude purge ~c
Čistěte, ale opatrně
Těmito postupy si můžete krásně vyčistit systém, ale zároveň jej můžete nepříjemně poškodit. Vždycky proto raději hlídejte, co se ten který příkaz snaží udělat a sledujte, zda je to opravdu to, co chcete. Tak příjemnou údržbu.