Hlavní navigace

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

Marcel Kolaja

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.

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.

Našli jste v článku chybu?

12. 8. 2003 15:30

Vaclav Dvorak (neregistrovaný)

Zdravim,
mam Debian Unstable, a chtel bych, aby se mi pri "apt-get upgrade" tahaly/instalovaly jen balicky, ktere maji bezpecnostni chybu ( resp. "priority=high" ).
Updatovat denne vsechny balicky v unstablu je...ehm...neprakticke...
Mate nekdo nejakou ideu jak na to ?
Dik..





11. 8. 2003 8:55

Lucas (neregistrovaný)

Pekny clanek. Tohle jsem si udelal rucne uz davno, ale asi prejdu na "oficialni nastroj" :)
Dik.
P.S. Nezapomente prosim na oslavy Debianu 16.8. v Brne a Praze !!



Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

DigiZone.cz: Velká cena v Abú Dhabí: 131 ti­síc diváků

Velká cena v Abú Dhabí: 131 ti­síc diváků

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

DigiZone.cz: Flix TV: dva set-top boxy za korunu

Flix TV: dva set-top boxy za korunu

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu