Jak funguje linuxový ekosystém

Byla řeč o kuchařích a ingrediencích. Ingredience jsou projekty, které vytvářejí různé týmy vývojářů. Existují projekty, na kterých pracují desítky či stovky vývojářů, ale i takové, které vytvořil a spravuje vývojář jeden. Dá se říci, že pro linuxový svět je vytvořena obrovská hromada projektů a vývojáři distribucí si vyberou, které do své distribuce zařadí a které ne.

Aplikace/knihovny/utility atd., a v neposlední řadě verzi jádra operačního systému, které si vývojáři vyberou, jsou k dispozici ve formě zdrojových kódů, ze kterých sestaví (kompilace) balíčky do repozitáře pro svou distribuci. Tento výběr rozšiřují i samotní uživatelé, protože když jim nějaká aplikace chybí, řeknou si o ní a pokud je to možné (licence, musí jít o udržovaný projekt, apod.), vývojáři jí zařadí do repozitáře.

Až doposud to vypadá, že by mohla existovat jedna distribuce. Avšak více distribucí má své opodstatnění.

Existují aplikace, ale i některé funkce, na které se vztahují softwarové patenty a vývojáři velkých distribucí si nemohou dovolit je zařadit do repozitáře distribuce, protože pokud za distribucí stojí nějaká firma, ocitla by se u soudního sporu velmi rychle. Proto se to často řeší vytvořením uživatelského repozitáře. Nejznámějším příkladem jsou některé audio nebo video kodeky, kdy často musíte při instalaci systému zaškrtnout, že takovou multimediální podporu nainstalovat chcete, či po instalaci systému musíte přidat uživatelský repozitář a doinstalovat ji. Samozřejmě se to netýká pouze kodeků, ale i některých aplikací a světe div se, mám v paměti i ovladač, který se do repozitáře distribucí z licenčních důvodů dostat nemohl. Nezávislé distribuce toto řešit příliš nemusí.

Uživatelské repozitáře jsou řešeny různými způsoby, často do nich mohou přidávat balíčky i samotní uživatelé. Od klasického sestavení balíčku a zaslání správci repozitáře, což se dnes už moc nevidí, až po automatické procesy, kdy na server uživatel odešle zdrojové kódy aplikace a „recept“, podle kterého se má balíček sestavit. Automatický systém jej sestaví, pokud se objeví chyba, ohlásí to a pokud vše proběhne v pořádku, je balíček záhy k dispozici (openSUSE OBS, openMandriva build system atd.). Další možností je uživatelský repozitář, do kterého uživatel pošle onen „recept“ k sestavení, zdrojové kódy a pokud si budete chtít takovou aplikaci nainstalovat, sestaví se vám v počítači automaticky. To je případ větve Arch Linuxu a jejich AUR (Arch User Repository). Ale i zde je možné připravit balíčky v binární podobě = již sestavené.

Vývojový tým distribuce nerozhoduje pouze o obsahu repozitáře, ale především o zaměření celé distribuce. Má být konzervativní nebo chceme poskytovat vše nové hned či se vydáme cestou někde mezi? Chceme udělat klikátka a být uživatelsky přívětivou distribucí nebo si vystačíme s klikátky v nastavení pracovního prostředí a zaměříme se na uživatele (mírně) pokročilé?

Důvodů, proč vznikla řada distribucí je více. Na začátku je potřeba říct, že spousta klonů distribucí, které mají jen jinou vizuální stránku, nepřináší nic nového, jiného, ale neustále přibývají. Typickým příkladem jsou klony Ubuntu, kdy jejich autoři přidají pár aplikací, které nejsou po instalaci Ubuntu v systému nainstalované (v repozitáři Ubuntu samozřejmě jsou), vymění vizuální témata a nazvou to distribucí. Ale vedle těchto klonů, vznikají distribuce, které mají co nabídnout. Pokud zůstanu na větvi Debianu, tak např. Mint Linux je dobrým příkladem.

Nicméně pokud si projdete celý strom distribucí, zjistíte, že na počátku všeho jich byla hrstka, přičemž některé vznikly jako byznys model a fungují tak dodnes. Ať již Red Hat nebo SUSE. Že vznikly na jejich základech další distribuce, které placenou podporu neměly, bylo u otevřeného softwaru celkem očekávatelné. K tomu si připočtěme, že se vždy objevovala myšlenka „udělat lepší“ uživatelsky přívětivou distribuci. Někomu se to povedlo (někomu dlouhodobě, někomu třeba jen dočasně), jinému ne a další skončil u výměny vizuální stránky. Tak jako tak, na tomto stromě můžete vidět obrovské množství distribucí, řada z nich je specializovaná na konkrétní účel (telefony, modemy, multimediální centra, atd.) a nepatří do skupiny, které se chci na tomto webu věnovat. Naopak není mnoho těch, které spadají do uživatelských distribucí pro osobní počítače.

Pokud to shrnu, tak víme, „jak se to vaří“, řekli jsme si, že vhodných distribucí nejsou miliony a že existují důvody k tomu, že není distribuce jedna.

Přesto existují snahy o sjednocení balíčkovacího systému (např. OpenPKG), univerzální repozitíře (např. flatpak) apod. Cílem je prý zjednodušit přípravu balíčků pro celý svět Linuxu těm, kteří nevydávají svůj software pro Linux s odůvodněním, že je příliš roztříštěný. Pravdou ale je, že pokud někdo svůj software do světa Linuxu připravit chce, nemusí dělat pro každou distribuci balíček zvlášť, ale může jej připravit pro celou větev Linuxu. A pokud se znovu podíváte, kolik větví Linuxu existuje, pokrýt majoritní zastoupení (větve Debian, Red Hat, SUSE Linux a Arch Linux) je otázkou tří balíčků. Jistě, pokrýt celý „rpm svět“ (větve Red Hat a SUSE Linux) není o napsání jednoduchého „receptu k tvorbě balíčku“ (spec), ale existuje používaný způsob, jak jej připravit a světe div se, funguje to jak pro větev Red Hatu a SUSE Linuxu, tak Debianu. A větev Arch Linux? Zde je navržen balíčkovací systém tak, že stačí pro celou větev jeden „recept“. Nebo existuje tzv. statický balíček, který obsahuje vše, co potřebuje aplikace ke svému běhu. Nejznámějším příkladem bude asi herní obchod Steam. Ano, ne všechna tvrzení, která na webu najdete, jsou pravda. Čili tyto snahy jsou zřejmě zbytečné, ten kdo nechce připravovat software pro svět Linuxu, jej prostě připravovat nebude. Proto tyto snahy nevedou k zamýšlenému cíli a ani nezískávají větší podporu či zájem uživatelů. Asi největší zájem uživatelů z těchto projektů, vzbudil Flatpak, ale k plošnému užívání nikdy nedošlo.

Je k tomu dobrý důvod. Letití uživatelé linuxových systémů, jsou zvyklí na pořádek v systému. Až na výjimky je všechno v systému jedenkrát. Z MS Windows jste zvyklí mít v systému jednu věc několikrát, třeba i v různých verzích. V Linuxu jsme zvyklí, že aplikace mezi sebou sdílí jak knihovny, tak další aplikace. Pokud byste používali Flatpak nebo jeho obdobu Snap, velikost aplikací se zásadně liší. Ukážeme si to třeba na OBS Studiu. Z instalovaný z repozitáře distribuce má velikost 90MB, z Flatpaku si nárokuje 4,2GB místa na disku, což je drobítek rozdíl. Ano, verze z Flatpaku si sebou totiž nese naprosto vše, co ke své funkci potřebuje, bez ohledu na to, jestli to již v systému nainstalované je nebo není. Je to způsob, kterým se distribuují aplikace ve světě MS Windows (proto jsou tak velké), ale v Linuxu to je nesmysl. Jestli chcete novější verze, než distribuce nabízí, je jednodušší a praktičtější změnit distribuci a nainstalovat tu, která vám nabídne to co chcete.