Odpovědi na nejčastější otázky kolem CentOS Stream: co se přesně děje?

17. 12. 2020
Doba čtení: 11 minut

Sdílet

 Autor: Pixabay
Když Red Hat s projektem CentOS minulý týden v úterý oznámily, že končí klasický CentOS 8 a dál bude podporovaný jen CentOS Stream, mělo to v linuxové komunitě účinek atomové bomby. Co to ale znamená ve skutečnosti?

Autor článku pracuje pro brněnskou pobočku společnosti Red Hat, má tedy informace z první ruky.

Když jsem se střízlivým pohledem podíval na to, co vlastně ve skutečnosti přechod na CentOS Stream znamená, už to tak dramaticky nevypadalo. V tomto článku se pokusím odpovědět na nejčastější otázky, které kolem aktuálních změn padají, a osvětlit tak, co to pro uživatele CentOSu znamená.

Jak se CentOS doteď lišil od Red Hat Enterprise Linuxu?

O CentOSu se říká, že je to věrná kopie Red Hat Enterprise Linuxu (RHEL), která je zdarma. Není to tak úplně pravda. CentOS začal tak, že komunita vzala zdrojové kódy Red Hat Enterprise Linuxu, které Red Hat vzhledem k licenční povaze softwaru, který Red Hat Enterprise Linux obsahuje, zveřejňuje, a sestavila z nich nový systém. Tak CentOS fungoval prakticky až doteď.

Nicméně stejné zdrojové kódy ještě neznamenají stejné binárky. K tomu musíte zachovat také proces sestavování, který ale je u CentOSu jiný. Úplně věrnou kopií na binární úrovni tak CentOS nikdy nebyl a není. Nicméně API/ABI kompatibilita je zachovaná a v praxi to funguje

Největší rozdíl je ale ve způsobu vydávání. Red Hat Enterprise Linux obsahuje tři typy aktualizací: velká vydání (jako 7 nebo nejnovější 8), ta zachovává i CentOS. Malá (desetinková) vydání (např. 8.1, 8.2…). Ta CentOS zachovával do verze 7. Opravy v rámci jednoho desetinkového vydání, též nazývané z-stream, které se ještě dělí na tzv. dávkové aktualizace, vycházející jednou za šest týdnů, a asynchronní aktualizace, kam míří kritické a bezpečnostní opravy okamžitě.

Z-stream má nastavenou laťku hodně vysoko, aby se do něj dostaly jen ty opravdu důležité opravy a systém byl v rámci desetinkového vydání co nejstabilnější a nejpředvídatelnější. CentOS 8 spojuje malá vydání a z-stream do jednoho streamu neodlišených aktualizací.

Zatímco u Red Hat Enterprise Linuxu jsou vybraná desetinková vydání podporovaná i několik let a zákazník se tak může rozhodnout zůstat na 8.2 i po vydání 8.3 a pořád bude dostávat bezpečnostní aktualizace, uživatel CentOSu takovou možnost nemá. Po vydání další desetinkové verze Red Hat Enterprise Linuxu se všechny změny v ní s nějakým zpožděním objeví mezi aktualizacemi CentOSu. A ty změny nemusí být malé: nová funkcionalita, nové ovladače v kernelu, nebo dokonce nové verze komponent. Důvod, proč i navzdory takovým změnám mají uživatelé stabilní systém, je ten, že Red Hat investuje velké prostředky do testování regresí a garantuje API/ABI kompatibilitu u základních komponent.

Dalším neméně důležitým rozdílem je ono již zmiňované zpoždění CentOSu. U velkých vydání jsou to řádově měsíce. CentOS 6 vyšel dokonce devět měsíců po vydání RHEL 6. Poté, co Red Hat začal platit klíčové přispěvatele do CentOSu, se tato situace zlepšila a CentOS 7 už vyšel jen měsíc po RHEL 7. Vzhledem k tomu, že uživatelé CentOSu jsou konzervativní a na novější verze přecházejí zpravidla s odstupem, nebylo toto zpoždění tak podstatné.

Podstatnější je zpožďování aktualizací a to především těch bezpečnostních. U Red Hat Enterprise Linuxu máte garantovanou opravu kritických bezpečnostních chyb do pěti pracovních dní po jejich zveřejnění. Každý, kdo na takové opravě někdy pracoval, ví, že je to dost tvrdý limit a není jednoduché v tak krátkém čase opravu udělat, pořádně otestovat a vydat. U CentOSu takovou garanci nemáte a k opravě se jeho správci dostanou až v momentě, kdy ji Red Hat zveřejní. Pak teprve můžou začít pracovat na tom, aby ji dostali k uživatelům. Výsledkem je, že u některých bezpečnostních oprav má CentOS i několik týdnů zpoždění za Red Hat Enterprise Linuxem a za samotným zveřejněním je ještě větší.

Jak se liší CentOS Stream od CentOS 8?

Jak se liší tradiční CentOS od Red Hat Enterprise Linuxu, jsme si vysvětlili, ale jaký je rozdíl mezi ním a CentOS Streamem? Rada projektu CentOS totiž oznámila, že podpora pro CentOS 8 bude ukončena na konci příštího roku a jeho náhradou bude CentOS Stream.

CentOS Stream vznikl jako snaha Red Hatu otevřít vývoj Red Hat Enterprise Linuxu. Tradičně to fungovalo tak, že jsme měli interně stream, do kterého padaly opravy ze z-streamu a také změny pro další desetinkové vydání. Z tohoto streamu se časem stalo právě další desetinkové vydání. Pro partnery, kteří s námi na Red Hat Enterprise Linuxu spolupracují (výrobci hardwaru, tvůrci významných aplikací pro Red Hat Enterprise Linux…), tu byly alpha a beta vydání. Nebylo to ale úplně ono. Proto se Red Hat rozhodl využít několika let práce na „continuous delivery“ a tento interní stream de facto zveřejnit v podobě CentOS Streamu.

Když se oznámil konec CentOS 8, lidi byli vyděšení, že dostali jako náhradu něco, co je označované jako „rolling release“. Osobně to označení považuji za nešťastné, protože to vytváří asociace se systémy, které dostávají nové verze komponent přímo z upstreamových projektů a často se vyznačují horší stabilitou. Nicméně realita je taková, že „rolling release“ v rámci jednoho velkého vydání už byl aktuální CentOS 8. Rozdíl je v načasování aktualizací. Zatímco CentOS 8 dostával změny dávkově (vždy jednou za půl roku, kdy vyšla desetinková verze Red Hat Enterprise Linuxu), CentOS Stream tyto změny dostává průběžně.


Aktualizační proces CentOS Stream a CentOS 8 ve vztahu k vydáním RHEL

Vzhledem k tomu, že v průběhu času se výrazně zvýšila automatizace testování, neznamená to, že CentOS Stream je netestovaná verze. Znamená to, že komponenty prošly integračním a regresním testováním. Jejich časné rozšíření může naopak zvýšit stabilitu výsledného produktu díky včasnému odhalení problémů v komplikovanějších systémech.

Změnila se také pozice CentOSu vůči Red Hat Enterprise Linuxu. Už to není jeho downstream, který čeká na změny v Red Hat Enterprise Linuxu, ale dostává je dříve. Jedná se tak o „vývojovou“ větev Red Hat Enterprise Linuxu, ale tento termín mi také přijde nešťastný, protože to opět vytváří negativní asociace s něčím, co obsahuje vývojové verze softwaru. Aby se ale změněný balíček dostal do Streamu, musí projít stejným množstvím testování jako na cestě do Red Hat Enterprise Linuxu. Je ale uživatelům k dispozici hned, zatímco doteď čekala v interním streamu na vydání nové desetinkové verze Red Hat Enterprise Linuxu a potom na to, až ji převezme CentOS.

Jiný proces je u bezpečnostních chyb, jejichž opravy se nezřídka nemůžou vypustit ven hned, ale musí se čekat na domluvený termín zveřejnění. U nich se tedy čeká na vydání oprav v Red Hat Enterprise Linuxu, kde správné načasování zajišťuje Security Response Team Red Hatu. Statisticky podložené to nemám, ale můj odhad je takový, že i tak bude CentOS Stream rychlejší v opravách bezpečnostních chyb než tradiční CentOS.

Převratnou změnou také je, že do CentOS Stream a tudíž i do Red Hat Enterprise Linuxu nyní mohou přispívat lidi mimo Red Hat. Doteď lidi mimo Red Hat mohli maximálně otevřít bug a čekat, ale co neudělali zaměstnanci Red Hatu, to se do Red Hat Enterprise Linuxu prostě nedostalo. Nyní může kdokoliv navrhnout opravu. Nad tím, co se do CentOS Streamu a posléze Red Hat Enterprise Linuxu dostane, budou mít i nadále kontrolu zaměstnanci Red Hatu, ale i tak je to významný posun k otevřenému vývoji. Stejně tak platí, že správci balíčků budou mít o poznání větší motivaci opravovat chyby nahlášené uživateli CentOS Stream, než je tomu nyní u uživatelů CentOSu. Případné změny se k uživatelům mohou také dostat výrazně rychleji, než když k nim plynou pouze skrze stabilní vydání Red Hat Enterprise Linuxu, protože jak je jednou vydáno, laťka pro opravy, které se do něj mohou dostat, je nastavená vysoko a většina změn musí čekat na další desetinkové vydání, což může být i půl roku.

Největší rozdíl jsem si nechal nakonec. Je jím délka podpory. Doteď byl CentOS podporován po celou dobu standardní podpory Red Hat Enterprise Linuxu (10 let). Podpora CentOS Stream bude výrazně kratší. Momentálně se počítá s tím, že podpora pro CentOS Stream založený na verzi 8 bude ukončená rok po vydání Red Hat Enterprise Linuxu 9. S tím, že toto datum může být v závislosti na potřebách komunity ještě přehodnoceno. CentOS Stream založený na verzi 9 by měl být k dispozici zhruba půlrok před vydáním Red Hat Enterprise Linuxu 9. Z toho vyplývá, že délka podpory CentOS Stream v rámci jednoho vydání by měla být minimálně 4 roky a uživatelé budou mít rok a půl na přechod.

Budou uživatelé CentOS Streamu „pokusnými králíky“?

Budou asi takovými „pokusnými králíky“, jako jsou nyní zákazníci Red Hat Enterprise Linuxu pro uživatele CentOSu. Red Hat Enterprise Linux totiž vychází dřív a pokud nějaká chyba proklouzne přes testování, narazí na ni jako první uživatelé Red Hat Enterprise Linuxu. Přesto si nemyslím, že by někdo nazýval zákazníky Red Hat Enterprise Linuxu pokusnými králíky.

Teď se pozice jen vymění. CentOS Stream bude dostávat změny dříve. Pořád jsou to ale ty samé aktualizace, které míří do Red Hat Enterprise Linuxu a které musí projít tím samým intenzivním testováním. Rozšířením uživatelské základny o uživatele CentOS Stream se může zvýšit celková kvalita – žádné testování nedokáže pokrýt všechny možnosti nastavení systému v produkčním prostředí. Díky požadavkům na kvalitu to však neznamená, že by uživatelé dostali neotestované komponenty.

Jak to bude se CentOS 6 a 7?

Podpora CentOS 6 skončila 30. listopadu, takže ten už je mimo hru. Pokud jej i nadále používáte, měli byste co nejdříve přejít na novější vydání. CentOS 7 má být podporovaný až do 30. června 2024 a na jeho fungování by se nemělo nic měnit.

Nemůže CentOS Stream dopadnout jako CentOS 8?

Prvně je třeba říct, že CentOS byl a bude komunitní distribuce. Pokud pro své nasazení požadujete smluvní záruky, je tu pro vás Red Hat Enterprise Linux. Od komunity, ač je z části tvořená lidmi placenými Red Hatem, něco takového čekat nelze.

Nicméně si osobně myslím, že Red Hat bude mít větší motivaci udržovat a rozvíjet CentOS Stream, než to bylo u tradičního CentOSu. Má totiž pevné místo ve vývoji Red Hat Enterprise Linuxu, je součástí docela ambiciózního plánu vývoj Red Hat Enterprise Linuxu otevřít. Tradiční CentOS sice Red Hatu budoval „mindshare“, dostal platformu Red Hatu i tam, kde nebyl prostor nebo ochota za ni platit, ale jinak do Red Hat Enterprise Linuxu nic zpátky nepřispíval.

Co když mi CentOS Stream nevyhovuje a RHEL si nemůžu dovolit?

Jak se bavím s lidmi o tom, jakým způsobem používají CentOS, myslím si, že valné většině z nich bude CentOS Stream vyhovovat. Nicméně existují použití, kde CentOS Stream vyhovovat nemusí. Typicky to může být tam, kde potřebujete testovat proti poslední desetinkové verzi Red Hat Enterprise Linuxu a ne proti tomu, co bude další desetinková verze.

Již dnes existuje Developer Subscription, kde stačí jen registrace a můžete Red Hat Enterprise Linux používat k vývojovým a testovacím účelům. V kontejnerovém nasazení můžete také použít Red Hat Universal Base Image, který je volně k použití.

Red Hat nicméně plánuje tuto nabídku rozšířit o další možnosti předplatného, které budou levnější nebo přímo zdarma, aby umožnil těm, kteří doteď používali CentOS a nebude jim vyhovovat CentOS Stream, používat přímo Red Hat Enterprise Linux.

Nahradí CentOS Stream Fedoru?

Určitě ne, Fedora má ve vývoji Red Hat Enterprise Linuxu jinou úlohu. Má nabízet ten nejnovější stabilní software v otestované podobě. Většinou je několik let před Red Hat Enterprise Linuxem. CentOS Stream je mu výrazně blíže. Dalo by se to zjednodušit takto: Fedora je tím, čím bude další velké vydání Red Hat Enterprise Linuxu. CentOS Stream je tím, co bude za několik měsíců další desetinkové vydání Red Hat Enterprise Linuxu.

Fedora bude touto změnou ovlivněná pouze na straně EPELu, což je rozšiřující repozitář pro Enterprise Linux, který se bude muset CentOS Streamu přizpůsobit.

Existuje jednoduchý způsob, jak migrovat z CentOS 8 na CentOS Stream?

Ano, migrace je jednoduchá a můžete ji provést následujícími třemi příkazy:

$ sudo dnf install centos-release-stream
$ sudo dnf swap centos-{linux,stream}-repos
$ sudo dnf distro-sync

Je-li výstupem cat /etc/centos-release  text „CentOS Stream release 8“, váš stroj úspěšně migroval na CentOS Stream. Pokud používáte balíčky z EPEL, doporučuji s migrací počkat. Kompatibilita s EPELem ještě není vyřešena.

Končí podpora CentOS 8 v roce 2021?

Konec podpory CentOS 8 byl ohlášený na konec roku 2021. Pokud správce systému neprovede upgrade na CentOS 8 Stream, přestanou k tomuto datu chodit aktualizace. Jak už je uvedeno výše, podpora CentOS 8 Stream bude končit rok po uvedení další velkého vydání Red Hat Enterprise Linuxu, měla by tedy trvat minimálně do roku 2024.

Jak dostat Stream aktualizace pod lepší kontrolu?

Pakliže na tradičním CentOSu 8 bylo možné v jediný den aktualizace otestovat a poté aplikovat na produkčních systémech, kdy s trochou štěstí nebyla v daném časovém okně vydána žádná errata, u Streamu už to bude o něco těžší trefit, protože aktualizace přicházejí častěji. Toto lze řešit „zmrazením“ repozitáře, čehož lze docílit prostou kopií na vlastní infrastruktuře.

Existuje několik nástrojů, které lze použít. Pro prostou kopii lze využít obyčejný rsync nebo reposync. Proces zrcadlení (aktualizace) pak lze nastavit podle potřebného plánu, nebo manuálně. Tím lze snadno zajistit, že v průběhu vlastní aktualizace a testování nedojde k přísunu nových balíčků.

ict ve školství 24

Pro sofistikovanější kontrolu aktualizací lze doporučit Pulp nebo nadstavbu Katello. V prvním případě lze pomocí jednoduchého backendu a CLI vytvářet a spravovat zrcadla repozitářů různých typů (Fedora, CentOS, RHEL, Debian, Ubuntu) či jiných artefaktů (Docker kontejnery, obrazy disků) a pohodlně nad nimi provádět synchronizační plány a sofistikovanější operace (např. odfiltrování nechtěných balíků). Druhý projekt je nadstavbou nad prvním s uživatelským webovým rozhraním vhodnějším pro větší týmy a s komplexnějším workflow.

Obecně je radno vyhnout se představě, že klony RHELu díky časové prodlevě obsahují méně chyb, a tak musí být nutně Stream kvalitativně horší. Přísnější plán aktualizací lze proto doporučit všem. Při použití „zmrazeného“ repozitáře lze pak zkontrolovat, zda od „zmrazení“ nebyla zjištěna žádná kritická chyba, která by mohla ovlivňovat systémy v produkčním prostředí.

Pokud používáte CentOS, jaký máte plán?

Autor článku

Používá Linux od roku 2005, podílel se na několika knihách o Linuxu a pracuje ve společnosti Red Hat, momentálně má na starosti tým, který pracuje na desktopových aplikacích.