Hlavní navigace

Balíčkovací systém distribuce Debian GNU/Linux: dokončení "apt-get"

11. 8. 2003
Doba čtení: 5 minut

Sdílet

Dnes dokončíme vysvětlování funkcí programu "apt-get" a budeme pokračovat vstříc dalším užitečným nástrojům balíčkovacího systému distribuce Debian GNU/Linux. Konkrétně si ukážeme, jak si zjednodušit práci se stahováním aktualizací distribuce.

Vyčištění keše

Balíčky, které pomocí programu apt-get instalujeme z HTTP nebo FTP serverů, se nejprve stáhnou do lokální keše, odkud se následně instalují. Tato keš je umístěna v adresáři /var/cache/ap­t/archives/. Balíčky v keši zůstávají, což je výhodné, pokud chcete balíčky, které jste stáhli, ještě někdy v budoucnu používat. Taková situace může nastat, chcete-li si třeba vyzkoušet několik různých balíčků z podobnou funkčností, abyste si nakonec vybrali ten, který vám nejvíce vyhovuje. Pak se může stát, že instalujete nějaké balíčky více než jednou, a určitě se nebudete zlobit, když zjistíte, že nemusíte balíčky stahovat znova. Nebo můžete pomocí NFS exportovat adresář

/var/cache/apt/ na jiné stroje a využívat tak společnou keš (potom však nebudete moci spustit apt-get na více strojích současně). Na druhou stranu se balíčky v keši hromadí, velikost keše narůstá a zabírá vám na disku zbytečně mnoho místa. Proto se vyplatí obsah keše občas pročistit. K tomu slouží příkaz apt-get clean. Po jeho provedení se obsah keše kompletně smaže. Podobným příkazem je apt-get autoclean. Ten však způsobí smazání pouze balíčků, které již nejsou k dispozici (neexistuje zdroj, z kterého by bylo možno je stáhnout). Pokud nastavíte v konfiguračním souboru /etc/apt/apt.conf direktivu APT::Clean-Installed na hodnotu off,

apt-get autoclean nesmaže ani balíčky, které máte nainstalovány.

Další informace o programu apt-get

Probrali jsme základní vlastnosti programu apt-get, který má ještě řadu možností, my už se o nich však nebudeme zmiňovat. Zájemce o detailnější popis programu a jeho konfiguračních voleb, odkazuji na následující manuálové stránky: apt-get(8), sources.list(5), apt.conf(5),ap­t_preferences(5). Dále stojí za povšimnutí dokumentace v adresáři /usr/share/doc/ap­t/, zejména soubor examples/configure-index.gz. V něm najdete všechny direktivy, které můžete použít v konfiguračním souboru apt.conf.

Automatické stahování aktualizací

Kombinace příkazů apt-get update a apt-get upgrade nám umožňuje jednoduchým způsobem aplikovat bezpečností aktualizace. Stále však musíme sledovat, zda náhodou nějaká bezpečnostní aktualizace nevyšla. To lze činit např. sledováním bezpečnostních zpráv nawww.debian.or­g/. Nebo si tyto zprávy můžete nechat zasílat poštou, pokud se zaregistrujete v konferenci debian-security-announce. Pokud však spravujete větší počet strojů, občas si ani neuvědomíte, že balíček, jehož bezpečnostní aktualizace vyšla, máte na serveru nainstalován, a bezpečnostní díra je na světě. Bohužel, ve vašem systému. Naštěstí Ola Lundqvist napsal nástroj nesoucí jméno cron-apt.

Jak napovídá název softwaru, cron-apt zajišťuje periodické spouštění nástroje apt-get. Pojďme se podívat, jak cron-apt pracuje. Jelikož se chování programu liší podle verze, kterou používáte, a některé funkce, které si popíšeme, nejsou v nižších verzích implementovány, uvádím, že budeme pracovat s verzí 0.0.17. Po instalaci balíčku se nám v systému mj. objeví soubor /etc/cron.d/cron-apt s následujícím obsahem:

#
# Regular cron jobs for the cron-apt package
#
# Every night at 4 a clock.
0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
# Every hour.
# 0 * * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2
# Every five minutes.
# 0/5 * * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2

Při ponechání implicitní konfigurace se tedy cron-apt spustí každý den ve 4:00. Pro obzvláště „aktualizacechtivé“ jedince je předkonfigurováno spouštění každou hodinu nebo každých pět minut; stačí odkomentovat příslušný řádek. Je také naznačeno, jakým způsobem lze stanovit, který konfigurační soubor se má použít. Zde tedy nakonfigurujete, kdy se má cron-apt spouštět.

A jak tedy cron-apt pracuje? Ten si po spuštění nejprve přečte svoji konfiguraci z /etc/cron-apt/config, která ovlivňuje jeho další běh. Proto se podíváme na konfigurační volby, které můžeme použít. Jelikož je cron-apt napsaný v jazyce bash a konfigurace se načítá způsobem . $CONFIG, můžeme pomocí konfiguračního souboru spustit libovolný kód jazyka bash. Hlavně se však v souboru confignastavují proměnné.

Nyní si probereme nastavení některých proměnných. Proměnná RUNSLEEP určuje, jakou maximální dobou má cron-apt od svého spuštění čekat, než začne provádět operace s programem apt-get. Implicitní hodnota je 3600 vteřin, tedy jedna hodina. Proměnná MAILTO stanovuje, komu se má poslat e-mail, pokud je potřeba ho někomu zaslat (např. chybové hlášení). Implicitně se pošta posílá uživateli root. A poslední proměnnou, kterou zmíníme jeMAILON. Ta může nabývat hodnoty error, always, output nebo upgrade a určuje, za jakých okolností je nutné poslat e-mail (při chybě, vždy, při libovolném výstupu nebo pokud existují balíčky, které lze aktualizovat). Pokud je proměnná MAILON nastavena na jinou hodnotu, e-mail není odeslán nikdy. Proměnná implicitně nabývá hodnoty error.

Po načtení konfigurace stanoví cron-apt náhodně dlouhou dobu (ne však delší než $RUNSLEEP), po kterou bude čekat, než začne provádět další operace, a čeká. Tím se omezuje přetěžování FTP či HTTP serverů, z kterých se stahují aktualizace. Po uplynutí stanovené doby začne cron-apt provádět akce programu apt-get, které lze nadefinovat v souborech v adresáři /etc/cron-apt/action.d/ (cesta lze nastavit v konfiguračním souboru config). Implicitně jsou v tomto adresáři soubory 0-updatea 3-download s následujícím obsahem:

$ cat 0-update
update
$ cat 3-download
upgrade -d -u -y
autoclean -y
$

cron-apt tedy spustí následující příkazy:

apt-get update
apt-get upgrade -d -u -y
apt-get autoclean -y

cron-apt tedy provede update a upgrade s tím, že stažené balíčky neinstaluje. Nakonec provede autoclean čímž udržuje přijatelnou velikost keše. Pokud chcete provádět jiné akce programu apt-get, stačí přidat soubor do adresáře /etc/cron-apt/action.d/, popř. modifikovat stávající soubory. Výstup provedených příkazů zapíše do logu a v závislosti na konfiguraci třeba ještě pošle e-mail. Spustíte-li cron-apt -i, přeskočí se fáze s čekáním po náhodně dlouhou dobu.

root_podpora

Závěrem můžeme prohlásit, že nainstalujete-li si cron-apt a nastavíte proměnnou MAILON na hodnotu upgrade. Budete o možné aktualizaci systému informováni e-mailem podobným následujícímu:

From: root <root@solnet.cz>
Subject: CRON-APT completed on duron.solnet

CRON-APT RUN: Thu May 15 02:02:57 CEST 2003
CRON-APT ACTION: 3-download, Thu May 15 02:02:57 CEST 2003
CRON-APT LINE: upgrade -d -u -y, Thu May 15 02:01:19 CEST 2003
Reading Package Lists...
Building Dependency Tree...
The following packages will be upgraded
   ash dash libgtk2.0-0 libgtk2.0-0png3 libgtk2.0-common mtr-tiny
6 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2999kB of archives. After unpacking 8192B will be freed.
Get:1 ftp://ftp.cz.debian.org testing/main ash 0.4.17 [11.8kB]
Get:2 ftp://ftp.cz.debian.org testing/main dash 0.4.17 [76.4kB]
Get:3 ftp://ftp.cz.debian.org testing/main mtr-tiny 0.54-1 [25.1kB]
Get:4 ftp://ftp.cz.debian.org testing/main libgtk2.0-common 2.2.1-6 [1158kB]
Get:5 ftp://ftp.cz.debian.org testing/main libgtk2.0-0 2.2.1-6 [1714kB]
Get:6 ftp://ftp.cz.debian.org testing/main libgtk2.0-0png3 2.2.1-6 [13.8kB]
Fetched 2999kB in 1m37s (30.9kB/s)
Download complete and in download only mode

Tento článek sponzoruje soLNet, s.r.o.

Byl pro vás článek přínosný?