Aktualizace linuxového systému za běhu

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Aktualizace linuxové distribuce je vždy ožehavá záležitost, protože se můžete dostat do stavu, kdy to nepůjde tam, ani zpět. Proto…

Než se pustíte do aktualizace

Vezměte do ruky papír a tužku, abyste si mohli…

  1. Udělat poznámky o stávající instalaci. Teprve po důkladném zmapování celého systému, kdy bude jasné:
    • jaká bloková zařízení se používají,
    • jaké jsou na nich souborové systémy a případné subvolume,
    • na jaké přípojné body jsou namountované,
    • jakou má stroj konfiguraci sítě,
    • jestli používá také sdílené adresáře nebo ne,…

    Zkrátka až budete mít poznamenáno vše, co byste mohli dodatečně potřebovat, můžete přikročit k dalšímu bodu, kterým je:

  2. Aktualizace systému, nebo zcela nová instalace na jiné blokové zařízení, nebo do jiného subvolume v rámci lokálního souborového systému Btrfs, pomocí aplikace cdebootstrap.

Prostudujte jak funguje váš balíčkovací systém

To, jak dopadne aktualizace za běhu, záleží na tom, jak kvalitní je balíčkovací systém aktualizované distribuce. Balíčkovací systém Debianu APT (Advanced Package Tools), byl navržen velice dobře, protože pracuje s různými stavy balíku a proces instalace přeruší dřív, než nastane tzv. „dependency hell”[1].

To v jakém stavu se balík nachází lze ihned vidět podle dvojice (či trojice) znaků na začátku řádku, použijete-li na příkazové řádce dpkg -l. A pomocí utility grep tak můžete z výpisu snadno a rychle odfiltrovat z výpisu to co vás zajímá.

Popis všech stavů, ve kterých se může DEB balíček ocitnout je na prvních třech řádcích výpisu dpkg -l | head -3. Jenže to má háček, pokud používáte lokalizovanou konzoli, protože překlad anglických výrazů do češtiny učinil kdosi bez toho, že by si byl vědom toho, co vlastně překládá:

Požadované=Neznámé/Instalovat/Odinstalovat/Vyčistit/Podržet
| Stav=Ne/Instalován/Konfigurační soubory/Rozbalen/Nezkonfigurován/Nekompletní
| instalace/Očekávané spouštěče/Nevyřízené spouštěče
|/ Chyba?=(nic)/Nutná přeinstalace (Stav,Chyba: velké písmeno=chyba)

Originální anglický text se vám zobrazí pokud použijete předtím příkaz unset LANG:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)

Stavy, zvýrazněné v popisu velkými písmeny se obvykle zobrazují (až na výjimky) malými písmeny, a jsou popsané v následující tabulce:

Požadovaný stav balíku (Desired) Aktuální stav balíku (Status)
Neznámý u n Nenainstalovaný
Nainstalovaný i i Nainstalovaný a zkonfigurovaný
Odinstalovaný r c Odinstalovaný, ale konfigurace k balíku je zachovaná
Kompletně odinstalovaný p U Nerozbalený
Nezkonfigurovaný h F Konfigurační proces nebyl z nějakého důvodu dokončen
h Instalační proces byl z nějakého důvodu přerušen
W Instalační proces čeká na to, až bude dokončena instalace balíku, na kterém je závislý
t Na dokončení instalace balíčku závisí jiný balík
Poznámka Za určitých okolností, se může objevit ještě třetí znak R, který signalizuje, že některý ze souborů z balíku byl poškozen, a tak musí být balík reinstalován.

Obvykle se balík vyskytuje v některém z následujících stavů:

  1. Balík je k dispozici, nenainstalován : Lze stáhnout informace o závislostech nutných pro instalaci balíku a před jeho vlastní instalací doplnit chybějící balíky. Takový balík se ve výpisu dpkg vůbec nezobrazuje.
  2. Balík je k dispozici, nainstalován, ale nezkonfigurován : Balík je stažen na lokální disk, rozbalený do dočasné pozice a čeká na konfiguraci. Teprve po úspěšné konfiguraci jsou přepsány z dočasné pozice do systému. Řádek takové balíku začíná iF
  3. Balík je nainstalován a zkonfigurován : Soubory z balíku jsou zavedeny v systému a konfigurační soubory odpovídajícím způsobem nastaveny. Řádek takové balíku začíná ii
  4. Balík je odinstalován, ovšem konfigurační soubory zůstaly zachovány : Během odebrání balíku zůstávají konfigurační soubory zachovány. Tím pádem při aktualizaci (nebo opětné instalaci) systém konfigurační soubory nepřepisuje, ale nabídne více možností, mezi jinými úpravu stávajících. Řádek takové balíku začíná rc
  5. Balík je kompletně odinstalován : Balík je odinstalován včetně konfiguračních souborů. Takový balík se ve výpisu dpkg vůbec nezobrazuje.
Poznámka S těmito stavovými kódy pracovala aplikace aptitude, kterou v současné době nahradil apt, který zastřešuje specializované nástroje s nimiž APT pracuje:
dpkg – který pracuje s nainstalovanými balíky
apt-get – který pracuje s repozitářem instalačních balíků a nástrojem dpkg
apt-cache – který pracuje se seznamy balíků které lze nainstalovat
stroj:~# apt-cache search ^meld
meld - graphical tool to diff and merge files
stroj:~# apt search ^meld
Řadí se… Hotovo
Fulltextové hledání… Hotovo
meld/testing 3.22.1-1 all
  graphical tool to diff and merge files


Využití systemd-nspawn

Poznámka Původní postup, uvedený na této stránce, byl sepsán v lednu 2011, kdy v rámci disklessové infrastruktury DCE ještě nebyl nasazen souborový systém Btrfs, který umožňuje snapshotování na úrovni souborového systému přes Btrfs a neexistoval nástroj systemd-nspawn.

Systém se tehdy instaloval na logické diskové oddíly vytvořené v rámci LVM nad softwarovám MD RAIDem. A k přepnutí do kopie systémového adresáře, určené k aktualizaci – do které se na příslušné přípojné body z běžícího systému „bindovaly” adresáře /dev, /proc a /sys – se přepínalo příkazem chroot.

  1. Do pekla závislostí se lze dostat při instalaci balíku, jehož správce (angl. maintainer), zapomene do popisu závislostí něco uvést, nebo v něm použije název balíku, který se posléze změnil, nebo má natvrdo nastavenou závislost na verzi balíku, který byla z repozitáře odstraněn. U DEB balíků, kde se závislosti řeší dřív, než je obsah balíku vybalen to obvykle nepředstavuje fatální problém, ale u RPM se velice často stávalo, že balíčkovací systém převalil systémové soubory dřív, než dokončil instalaci a konfiguraci balíků, které na nich byly závislé. A nebylo možné pokračovat, ani změnu vrátit.