Vlastné úložisko balíkov
Balíkovací systém Debianu je založený na programoch ako dpkg, súpravy apt a aptitude. Šikovný je aj GUI pre apt, zvaný synaptic. Aby však pracovali celkom podľa našich predstáv, je potrebné im povedať, kde majú hľadať balíky s programami. Ak Vám nepostačuje predvolené nastavenie, tu je viac.
V tomto článku sa rozpíšem o tom, ako si lepšie nastaviť balíkovací systém Debianu. Dočítate sa ako manuálne nainštalovať balík, aj s rizikami, ktoré to v sebe skrýva. Potom sa dozviete ako sa týmto rizikám vyhnúť a zjednodušiť si prácu.
Najprv teda popis rizík manuálnej inštalácie, ktoré môžu začiatočníka odradiť od skúšaniu nových programov, a to by bola škoda.
Manuálna inštalácia balíka
Predstavte si, že ste niekde na internete konečne našli program, ktorý potrebujete. Myslíte, že máte vyhraté, ale beda. Napriek tomu, že v úložisku Debianu sú tisíce programov, ten Váš tam nie je.
Nie, nebudem popisovať inštaláciu programu zo zdrojových kódov, predstavme si lepšiu variantu, a to, že tvorca programu poskytuje na svojich stránkach aj pripravené balíky pre Debian. Spoznáte ich podľa toho, že majú príponu .deb. Stiahnuť takýto balík nie je problém, ale ako ho nainštalovať?
Slúži na to nástroj dpkg - správca balíkov pre Debian (debian package manager). Jeho použitie ukážem na príklade inštalácie programu Lazarus (čo je grafický vývojový nástroj pre programovanie v Pascale). Na stránkach Lazarus je k dispozícii aj balík pre Debian - lazarus_0.9.24-0_i386.deb. Tento súbor stiahnite, povedzme, do domovského adresára. Nainštalovať ho môžete pomocou príkazu
cd ~
dpkg -i lazarus_0.9.24-0_i386.deb
Ak máte šťastie, balík sa nainštaluje a funguje. Píšem, ak máte šťastie, pretože dpkg je nástroj na prácu s balíkami na najnižšej úrovni. Nedokáže skontrolovať závislosti balíkov, ani existenciu nainštalovanej staršej verzie programu.
Ak šťastie nemáte, dpkg zahlási pri inštalácii chybu a program pravdepodobne nespustíte. Ešte vždy môžete mať šťastie. Program môže vyžadovať balíky, ktoré sa nachádzajú v úložisku balíkov Debianu, a tak môžete použiť aptitude, či synaptic, na opravu poškodených závislosti, teda na doinštalovanie chýbajúcich balíkov.
Ak šťastie nemáte, musíte buď chýbajúce balíky hľadať na internete a ručne ich nainštalovať, alebo sa zvoleného programu vzdať.
Až Vás nový program prestane baviť, nesplní Vaše očakávania alebo chcete nainštalovať jeho novú verziu (dpkg nekontroluje ani staršie verzie programu, a dokáže nainštalovať jeden program dvakrát), nastane čas na jeho odinštalovanie. Odinštalovanie možno urobiť dvomi spôsobmi:
- odinštalovanie balíka (-r), ktoré ponechá konfiguračné súbory a pri opätovnej inštalácii máte program k dispozícii aj s pôvodnými nastaveniami,
- úplné odstránenie balíka (-R), ktoré odstráni aj konfiguračné súbory.
Na rozdiel od inštalácie, pri odinštalácii sa nezadáva meno súboru s balíkom, ale len meno balíka. Pre náš príklad s Lazarom teda zadáme:
dpkg -r lazarus
prípadne
dpkg -R lazarus
Čiže, na záver to zhrniem. Pre prácu so súbormi .deb možno použiť nástroj dpkg. Jeho použitie však v sebe skrýva riziko nesplnených závislostí, či nainštalovanej staršej verzie programu.
Lokálne úložisko balíkov
Vytvorenie
Teraz skúsime iný spôsob. Vytvoríme si lokálne úložisko balíkov a nastavíme balíkovací systém, aby ho používal. Tkto odstránime problémy so sledovaním závislostí, ke´dže nám to umožní používať nadstavby dpkg - apt-get, aptitude alebo aj synaptic. Pre vytvorenie lokálneho úložiska balíkov je dobré vytvoriť si samostatný adresár (prípadne viac adresárov), v ktorom budú všetky balíky umiestnené, nech sa nám len tak nepletú v súborovom systéme. Vytvoríme si, povedzme, adresár /usr/local/repozitar
mkdir /usr/src/repozitar
Do tohoto adresára umiestnime stiahnuté balíky a vygenerujeme súbor Packages, ktorý obsahuje popisy balíkov, vrátane ich verzií a závislotí, a ktorému rozumie (vyžaduje ho) balíkovací systém. Súbor Packages vytvoríme pomocou nástroja dpkg-scanpackges (balík dpkg-dev):
cd /usr/src/repozitar
dpkg-scanpackages . /dev/null > Packages
alebo pomocou nástroja apt-ftparchive (balík apt-utils):
apt-ftparchive packages . > Packages
prípadne je možné využiť kompresiu, napríklad pre apt-ftparchive (pre dpkg-scanpackages je to obdobné):
apt-ftparchive packages . | gzip -9c > Packages.gz
Všimnite si bodku vo všetkých podobách príkazu, označuje aktuálny adresár, preto je, pri generovaní súboru Packages*, potrebné byť v adresári z balíkmi. Týmto je úložisko hotové a pripravené na používanie.
Nastavenie
Teraz ešte musíme oznámiť balíkovaciemu systému, že má používať nové úložisko. Nastavenie úložísk je nájdeme v súbore /etc/apt/sources.list. Takže do tohoto súboru pridáme definíciu nášho lokálneho úložiska balíkov, teda pridáme riadok
deb file:/usr/local/repozitar ./
Jedná sa o štandardný zápis do zoznamu úložísk, avšak ako protokol je zadaný súborový systém v danom adresári (file:/usr/local/repozitar) bez definície vety (./).
Podpísanie
Pri takto vytvorenom a nastavenom lokálnom úložisku nie je zatiaľ vyriešený jeden problém. A to problém bezpečnostný. Na predchádzanie problému s podhodenými nebezpečnými balíkmi zaviedli vývojári systém podpisovania balíkov, respektíve úložísk s balíkmi. Apt poskytuje možnosť nastaviť ako bezpečné úložisko CD-ROM, ale toto zjednodušenie neposkytuje pre lokálne úložisko. Je preto potrebné lokálne úložisko podpísať a kľúč pridať do systému apt.
Začneme vytvorením kľúča (dajte pozor aby ste vytvorili kľúč sebe a nie rootovi), ak už kľúč máte, môžete rovno postúpiť k ďalšiemu kroku:
gpg --gen-key
Program gpg položí niekoľko otázok, z ktorých vyberiem:
- zvoľte druh kľúča DSA a ElGama
- dĺžku kľúča 2048
- neobmedzenú dobu platnosti
Potom ešte heslo a osobné údaje. Po vygenerovaní kľúča je ho treba pridať do systému apt:
gpg --export --armor slavko | sudo apt-key add -
No a ostáva podpísať naše úložisko. K tomu je potrebné v adresári s úložiskom vygenerovať súbor Release (prípadne Release.gz), o čo sa znova postará nástroj apt-ftparchive:
cd /usr/src/repozitar
apt-ftparchive release . > Release
No a vygenerovaný súbor Release podpísať:
gpg --output Release.gpg -ba Release
Teraz je naše úložisko podpísané, balíkovací systém pozná náš podpis a tak balíky v úložisku hodnotí ako bezpečné. Aby však balíkovací systém začal naše lokálne úložisko aj používať, musíme ešte aktualizovať zoznam balíkov pomocou
aptitude update
A teraz už môžeme Lazarus nainštalovať komfortne, pomocou aptitude alebo synaptic
aptitude install lazarus
Záver
Pri každom pridaní/odobratí balíka z/do lokálneho úložiska je opäť treba vygenerovať nové súbor y Packages, Release, podpísať ho a aktualizovať zoznam balíkov
cd /usr/src/repozitar
dpkg-scanpackages . /dev/null > Packages
apt-ftparchive release . > Release
gpg --output Release.gpg -ba Release
aptitude update
Týmto spôsobom si ušetríme problémy so závislosťami, pretože môžeme pracovať na vyššej úrovni balíkovacieho systému. Teda rovnako ako so štandardnými úložiskami. Ak nám však nejaký balík chýba, tak ani toto nepomôže.
Možno ešte jedna pripomienka, týkajúca sa apt-ftparchive, nech je to úplné. Vyššie spomínaným spôsobom je vygenerovaný úplnezákladný súbor Release. Ak k nemu chcete pridať aj nejakú podrobnosti o autorovi úložiska, môžete využiť konfiguračný súbor /etc/apt/apt-ftparchive.conf, v ktorom je možné definovať ďalšie podrobnosti, napríklad:
APT::FTPArchive::Release::Codename "lenny";
APT::FTPArchive::Release::Origin "Slavko";
APT::FTPArchive::Release::Label "moje balíky";
APT::FTPArchive::Release::Architectures "amd64 all";
APT::FTPArchive::Release::Suite "testing";
No a keďže taká aktualizácia úložiska vyžaduje tri kroky, používam na to jednoduchý skript, ale to už je na Vás.


