Disassembler

Artificial intelligence is no match for natural stupidity.
13říjen2011

Apt-get: Výběr repozitáře při instalaci balíčků


Na většinu svých instalací Debianu instaluji htop. Jedná se o nástroj na správu procesů, se kterým se mi pracuje mnohem lépe než se standardní trojicí top+ps+kill. Jsem si jist, že většina z vás jej zná. V repozitáři squeeze je ale htop ve verzi 0.8.3-1, ve které je bug, kvůli kterému je vytížení neaktivního jádra u novějších procesorů zobrazeno jako -NaN%. Verze 0.9 v reporitáři testing tímto neduhem netrpí a vypadá dostatečně stabilně na to, abych si ji dovolil instalovat i na produkční systémy. Jak tedy jednoduše donutit apt-get nainstalovat jeden balík z jiného repozitáře než všechny ostatní?

Jak se to nedělá


První řešení, které většinu lidí napadne, je dopsat řádek s testing repozitářem do /etc/apt/sources.list, spustit apt-get install <balíček> a po instalaci řádek v sources.list zase smazat nebo zakomentovat. Řešení to sice je, avšak nepříliš bezpečné. Může se stát, že společně s požadovným balíčkem se stáhnou i další updaty, o které jste nežádali nebo že pak zapomenete na zakomentování řádku a při příštím apt-get upgrade se nebudete stíhat divit. Dalším řešením je stáhnout nebo nainstalovat balíček na jiném stroji a na cílový ho zkopírovat. To je sice bezpečnější, ale také zdlouhavější a vyžaduje další počítač. Navíc může být obtížně aplikovatelné u složitějších balíčků, protože mohou vyžadovat různé závislosti, které na cílovém stroji nemusí být splněny.

Jak se to dělá


Naštěstí i Aptitude a apt-get poskytují podobnou funkcionalitu pro výběru repozitářů jako yum. Jen je třeba ji správně nastavit. Dělá se to tak, že se Aptitudě řeknete, který repozitář má preferovat a pokud budete chtít instalovat apt-getem z jiného, zvolíte ho paramenterm -t. Aptitude má adresář s konfiguračními soubory v /etc/apt/apt.conf.d a to je přesně to místo, kam přijde direktiva určující preferovaný repozitář. V tomto adresáři tedy vytvořte soubor s libovolným názvem, třeba 50defaultrepo a do něj napište

APT::Default-Release "stable";

Do /etc/apt/sources.list pak můžete dopsat vámi požadovaný repozitář

deb http://ftp.cz.debian.org/debian/ testing main

který ale nebude při instalaci balíčků použit, pokud o něj explicitně nepožádáte. Instalace výše zmíněného htopu 0.9 tedy můžete provést jednoduchým

apt-get -t testing install htop

Hotovo.