Kategória: Debian Linux

Zmenené: 30. január 2013

Automatizácia APT

Ak sa staráte len o svoj počítač, tak vám nebude aktualizácia robiť väčší problém. Ak sa staráte o viac počítačov a ešte s rôznymi architektúrami, môže byť dennodenná kontrola aktualizácie dosť otravná. Čo v tomto smere poskytuje Debian?

Možností je niekoľko, počnúc vlastnými skriptami v cron až po nástroje s grafickým rozhraním. Poskytujú rôzne možnosti, rôzny komfort, jednoducho je si z čoho vyberať.

Aktualizovať či neaktualizovať?

Odpoveď na túto Hamletovsky orientovanú otázku je jasná. Aktualizácia softvéru je potrebná. Otázkou ostáva, ako túto aktualizáciu robiť. V podstate existujú dva spôsoby:

  • manuálna aktualizácia a
  • automatická aktualizácia.

Každý z nich má svoje výhody i nevýhody. Nebudem ich rozoberať jednotlivo, ale skúsim spísať, čo pri aktualizácii chcem a čo zase nechcem. Takže čo chcem?

  • mať aktuálny systém tu mám na mysli najmä bezpečnostné aktualizácie,
  • mať funkčný systém teda všetky služby, ktoré má systém poskytovať, musia fungovať,
  • mať bezpečný systém čiže nestačí aby služby fungovali, musia fungovať správne,
  • mať výkonný systém inými slovami, systém (služby) musí nie len fungovať správne, ale aj najlepšie ako sa dá.

Automatická aktualizácia mi určite zaistí splnenie prvej podmienky, a to dokonca bez môjho zásahu. Dokonca môže zabezpečiť aj druhú podmienku, pretože balíkovací systém je možné nastaviť tak, aby sa aktualizoval bez toho, aby kládol otázky, ktoré môžu proces aktualizácie zastaviť. Medzi tieto otázky patrí napríklad otázka na prepísanie upraveného konfiguračného súboru, otázka na odinštalovanie konfliktných balíkov a podobne. Vypnutie týchto otázok však môže mať za následok, že tá-ktorá služba nebude bežať s bezpečnými, či efektívnymi nastaveniami…

Manuálna aktualizácia je zase otravná. Keďže ju spúšťate sami, dokážete zodpovedať položené otázky, dokážete reagovať na zmeny konfigurácie (napríklad zmenu východzích nastavení), všetky problémy môžete okamžite riešiť. Ale toto všetko môžete až po tom, ako aktualizáciu spustíte, čo niekedy môže byť problém. A tak manuálna aktualizácia často nerieši prvú podmienku, respektíve rieši ju s časovým oneskorením, ktoré môže byť v produkčných systémoch dôležité.

Ako teda riešiť aktualizáciu? Ja volím spôsob, ktorý je niekde uprostred spomenutých možností. Nechávam automaticky aktualizovať zoznam dostupných aktualizácií a informáciu o dostupnosti aktualizácií si nechávam posielať emailom. Sám sa potom rozhodnem, či je aktualizácia taká dôležitá, že nestrpí odklad alebo až taká dôležitá nie je a počká na vhodnú príležitosť. Nazvem tento spôsob aktualizácie poloautomatickou aktualizáciou.

Nástroje

Existuje niekoľko nástrojov, ktoré sú vytvorené práve s cieľom automatizovania procesu aktualizácie. Môžete použiť samostatné nástroje, ako napríklad:

cron-apt

Tento nástroj poskytuje ako možnosť posielania upozornení na aktualizácie emailom, tak i možnosť ich automatického inštalovania. V podstate dokáže vykonávať akúkoľvek operáciu, na základe stavu balíkov.

apticron

Nástroj apticron je vlastne len jednoduchý skript, ktorý pravidelne aktualizuje zoznam dostupných balíkov a na zadanú emailovú adresu posiela informácie o dostupných aktualizáciách.

update-notifier

Tento nástroj je vo dvoch verziách, jedna pre KDE a druhá pre zvyšok sveta. Poskytuje sadu konfiguračných súborov, ktoré sa postarajú o zobrazenie informácií pomocou démona upozornení na dostupné aktualizácie alebo na potrebu reštartovať systém (napr. po aktualizácii jadra).

Tieto nástroje riešia v podstate tú istú úlohy, ale každý trochu iným spôsobom. Nástroj cron-apt je vhodný pre pokročilých správcov, ktorý si ho vedia dobre nastaviť, nástroj apticron je zase vhodný pre každého, komu stačia emaily a update-notifier je zase vhodný pre používateľa s grafickým rozhraním. Málokto však vie, že ich vlastne ani nepotrebuje. Sada nástrojov APT poskytuje možnosti, pomocou ktorých možno vykonávať periodické úlohy. Tak poďme na nich.

Periodické úlohy APT

Periodické úlohy sú úlohy, ktoré sa vykonávajú opakovane. Medzi tieto úlohy určite patrí:

  • aktualizácia zoznamu balíkov;
  • stiahnutie aktualizácií;
  • inštalácia aktualizácií;
  • záloha balíkov;
  • čistenie vyrovnávacej pamäte balíkov.

Mnou definované poloautomatické aktualizovanie sa týka najmä prvých dvoch bodov, ale potešia aj posledné dve odrážky, o tom však neskôr. Celá mágia týchto periodických úloh APT je realizovaná skriptom /etc/cron.daily/apt, ktorý je súčasťou balíka apt a s najväčšou pravdepodobnosťou ho máte nainštalovaný a pravidelne (každý deň) spúšťaný ako úloha plánovača cron.

Rada

Ak čítate tento článok a používate Debian na osobnom počítači, pozrite sa na balík anacron .

Skript je síce nainštalovaný a pravidelne spúšťaný, jeho funkcie však sú síce predvolene, ako celok, zapnuté, ale jednotlivé úlohy sú zakázané (vypnuté). Toto východzie nastavenie je pre Debian charakteristické, hoci sa to môže zdať niekomu divné pretože Debian nikomu nevnucuje čo a ako má robiť (cez východzie nastavenia), ale len ponúka možnosť.

Tip

Takto každému beží len to, čo si sám nastaví/povolí. Uznávam, že toto správanie nemusí každému vyhovovať, ale je jedným z dôvodov prečo mám Debian rád.

Postup zapnutia tejto automatizácie je popísaný na začiatku samotného skriptu a je veľmi jednoduchý. Základom všetkého je potreba vytvoriť konfiguračný súbor v konfiguračnom adresári apt /etc/apt/apt.conf.d/02periodic. Meno súboru nie je až také dôležité, len jeho číselná časť, ktorá udáva poradie, v akom je konfigurácia načítaná.

Zapnutie aktualizácie

Ako som spomínal, vykonávanie periodických úloh ako celok je zapnuté, slúži na to voľba:

APT::Periodic::Enable "1";

ktorú nie je potrebné zadávať. Jednotlivé úlohy sú však vypnuté a tie je treba zapnúť. Ako prvé zapnem automatickú aktualizáciu zoznamu balíkov každý deň:

APT::Periodic::Update-Package-Lists "1";

Hodnota 0 túto aktualizáciu zoznamu balíkov vypne, iné číslo udáva interval aktualizácie v dňoch, napr. 7 znamená raz za týždeň. Akú hodnotu nastaviť? Na produkčnom serveri si iste nastavím hodnotu 1, na domácom počítači možno 7 alebo až 14. Ak sa neviete rozhodnúť, nastavte hodnotu a ak zistíte, že je to otravné, nasatvte viac. Potom, až premeškáte nejakú aktualizáciu a stanete sa obeťou bezpečnostnej chyby to iste zase nastavíte na menej…

Ak chcete aby APT dostupné aktualizácie automaticky stiahol, použite voľbu:

APT::Periodic::Download-Upgradeable-Packages "1";

Aj v tomto prípade hodnota udáva interval ako často majú byť balíky sťahované. Myslím, že vhodné nastavenie by mohlo byť rovnaká hodnota ako v predchádzajúcom prípade. Takto vopred stiahnuté balíky oceníte najmä vtedy, keď spustíte inštaláciu aktualizácií a už nemusíte čakať na stiahnutie balíkov, ale rovno sa inštalujú. Ak sa však nechystáte inštalovať aktualizácie hneď ako ste na nich upozornený, ľahko budú balíky sťahované zbytočne…

Na záver som si nechal voľbu, ktorú iste nebudete chcieť zapínať:

APT::Periodic::Unattended-Upgrade "0";

Táto voľby slúži na zapnutie automatickej inštalácie aktualizácií, ktorú mám vypnutú. jednak vyžaduje inštaláciu balíka unattended-upgrades a jednak si tým skôr alebo neskôr privodíte nejaký problém. Predstavte si situáciu, keď sa v piatok spustí automatická aktualizácia služby. Nový balík sa nainštaluje, služba sa zastaví, ale pri jej spustení nastane chyba. Asi by vás nikto nepochválil, že bol napr. webový server celý víkend nedostupný, prípadne nechcete stráviť víkend v práci…

Info emailom

Celé automatické aktualizovanie zoznamu by bolo zbytočné, keby ste sa o dostupných aktualizáciách nedozvedeli. Periodické úlohy môžu poslať svoj výsledok emailom. Táto funkcia je však podľa mňa nedotiahnutá, pretože umožňuje posielať emaily iba používateľovi root a v systéme musí byť nastavený nejaký poštový systém. Pokiaľ však nemáte prepracovaný systém oprávnení administrátorov, nemal by to byť problém. Posielanie emailov zapína voľba:

APT::Periodic::Verbose "1";

Výrečnosť je možné zvýšiť na 2 alebo 3. Hodnotu, ktorá vám bude vyhovovať si musíte vyskúšať. Vhodné tiež bude nastaviť poštový systém tak, aby ste email dostávali do poštovej schránky, ktorú aj pravidelne čítate…

Náhodné oneskorenie

Ak máte v sieti X serverov s nastavenými automatickými úlohami APT, príde vhod voľba, ktorá sa postará o ich spúšťanie s náhodným oneskorením. Východzia hodnota pre tento interval je 1 800 s, čiže 30 min. Ale napríklad môj stroj doma sa nepotrebuje takto náhodne spúšťať (aj preto, že ostatné úlohy cron čakajú na dokončenie tejto). Ak chcete tento interval zmeniť, prípadne vypnúť (ako je v príklade), stačí pridať voľbu:

APT::Periodic::RandomSleep "0";

Ďalšie možnosti

Zaujímavou vlastnosťou je nastavenie zálohovania. Samozrejme, je tu myslené zálohovanie balíkov stiahnutých do vyrovnávacej pamäte. Zálohovania sa týkajú voľby:

APT::Periodic::BackupArchiveInterval "0";
APT::Periodic::BackupLevel "3";

Intervall zálohovania udáva ako často (raz za koľko dní) sa má zálohovanie realizovať, pričom sa realizuje len ak došlo k zmene archívu a úroveň zálohy zase udáva koľko verzií balíkov sa má uchovávať.

Automatické mazanie

Okrem zálohovania stojí za zmienku aj práca s vyrovnávacou pamäťou (lokálnym archívom) balíkov, ktorý iste stojí za to občas vyčistiť:

APT::Periodic::MaxAge "0";
APT::Periodic::MinAge "2";
APT::Periodic::MaxSize "0";
APT::Periodic::AutocleanInterval "7";

Jednotlivé voľby nastavujú maximálny a minimálny vek balíka, ktorý má byť uchovaný v archíve, respektíve maximálna veľkosť archívu ako celku. Možno nastaviť aj interval vykonávania príkazu autoclean. Ako predtým, i teraz hodnota 0 znamená, že je daná možnosť vypnutá.

Príklad súboru

Namiesto záveru len ukážka celého súboru:

// parametre pre úlohu cronu v /etc/cron.daily/apt

APT::Periodic
{
  BackupArchiveInterval "0";
  BackupLevel "3";
  MaxAge "14";
  MinAge "2";
  MaxSize "500";

  Update-Package-Lists "1";
  Download-Upgradeable-Packages "1";

  Unattended-Upgrade "0";
  AutocleanInterval "7";

  Verbose "1";

  RandomSleep "0";
};

Neberte ho ako dogmu, len ako inšpiráciu…