Hlavní navigace

Vyčistěte si Debian: pryč s nepotřebnými balíčky a dalším nepořádkem

3. 7. 2012
Doba čtení: 4 minuty

Sdílet

Jednu linuxovou instalaci můžete používat mnoho let a stále bude plně funkční. Pokud budou správně fungovat aktualizace, je možné kontinuálně používat jeden systém prakticky nekonečnou dobu. Vzniká v něm ovšem tu a tam nějaká hromádka nepořádku, kterou je třeba vymést. Poradíme vám, jak na Debian a jeho deriváty.

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.

Cloud23

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.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.