Portál AbcLinuxu, 5. května 2025 03:02
Tento článek nebude o školnících ani instalatérech. Místo toho přinese pár kapitol z příběhu o životě (nejen) binárního balíčku v linuxové distribuci.
V diskusi pod mým posledním článkem se objevil názor, že o opravy chyb v balíčcích by se spíš než distributoři měli starat autoři. To je pěkná představa, která ale z mnoha důvodů narazí na tvrdé hrany reality: předně, neexistuje žádná páka, jak autora donutit, aby problém spravil (ve skutečnosti dá občas pořádnou fušku ho donutit, aby vydal novou verzi i s opravou, kterou jsme mu zaslali). Potom, i ochotné autory open source programů jejich balíček obvykle neživí a než si na něj mohou udělat čas, nejspíš najdete ještě dalších deset chyb. Navíc uživatele jednotlivých distribucí možná přesvědčíme, aby hlásili chyby v distribuční bugzille, ale určitě je nedonutíme, aby se ještě sháněli po autorovi. A konečně, některé problémy balíčku, které se projevují v konkrétní distribuci, autor stejně vyřešit nemůže.
Každý distributor si tak musí zajistit tým lidí, kteří se kromě jiného zabývají také péčí o jednotlivé balíčky obsažené v distribuci. Komunitní distra to mají celkem jednoduché, obvykle sdružují velké množstvín dobrovolníků starajících se jen o pár balíčků, které je zajímají. Komerční distributoři potom musí rozdělit své balíčky mezi své zaměstnance: u některých panuje anarchie a o balíky se stará ten, kdo má zrovna čas, u dalších jsou všechny rozděleny mezi jednotlivé vývojáře, kteří pak řeší veškeré problémy s nimi spjaté.
Naše distribuce je ztělesněním druhého jmenovaného modelu. Kromě toho, že většina vývojářů si mimo běžné náplně práce balí pár svých oblíbených balíčků, existují také balíkáři - specialisti. Balíky, které mají v péči, se počítají na stovky a jejich udržování věnují celou svou pracovní dobu. Jak jejich práce vypadá?
Jak říkávám, práce balíkáře znamená opravovat chyby v programech, které neznáme, a které jsou napsané v jazycích, které neumíme. K většině programů přijde balíkář jak slepý k houslím a jejich kód poprvé spatří až ve chvíli, kdy řeší nějaký problém. Občas tak dochází k nemilým překvapením: už jsem tady vyprávěla, jak jsem se učila Fortran a v nejbližší době se zřejmě dočkáte pokračování, tentokrát se bude týkat Scheme. Smůla je, že k normálnímu programování se balíkář dostane obvykle jen ve volném čase: obyčejně pár hodin kouká do kódu, a potom odevzdá patch čítající pět řádků.
Většinu času balíkář stráví v relativním klidu a pohodě (řeší jen problémy s přechodem na nové verze gcc, glibc, portováním na různé absurdní architektury a uživateli domáhajícími se nesmyslných featur), ta se ale rychle rozplyne přibližně týden před tím, než je vyhlášen freeze na nové verze balíků v nadcházející verzi distribuce. Tehdy je totiž třeba co nejrychleji aktualizovat všechny balíčky: pouštět se do toho dřív nemá valného smyslu, protože potom stejně ještě vyjdou nové verze. Dělat si strejčka se vyplatí jen u knihoven. Někdy má člověk štěstí a všechno jde jako po másle, jindy dře jako otrok na plantáži.
Výsledkem této akce je distribuce ve stavu připomínajícím dort pejska a kočičky: nastává chvíle, kdy programy padají jak zralé ovoce a je na vývojářích, aby chyby našli a opravili. Než se nadějí, uplyne čas do první bety a k chybám nalezeným vlastnoručně přibudou hromady hlášení od uživatelů. V těchto okamžicích naprosto nemá smysl spoléhat na opravy od autorů jednotlivých programů: nebylo by to dost rychle a navíc ukázat jim, jak chybu zreprodukovat, by mnohdy dalo víc práce, než ji spravit. Nepříjemnosti, které toto období přináší, jsou způsobeny jen a pouze tím, že nové verze programů obvykle přicházejí na svět nedostatečně odladěné.
V praxi tedy ráno člověk přijde k počítači, vypije si první kafe a přitom si prohlédne seznam nových bugreportů, které přibyly přes noc (uživatelé pilně testují ve všech časových zónách). Pak je probírá jeden po druhém, a když má štěstí, opraví jich tolik, že se seznam přes den neprodlouží. V noci u posledního kafe potom rozešle své patche autorům jednotlivých programů. Text mailu mnohdy najde jako komentář ke svému kódu v dalším vydání programu: občas i přesto, že jde o slova jako "tento pointer je občas NULL, nevím proč." Tolik tedy k ochotě upstream autorů zabývat se chybami ve svém kódu.
Nakonec se začne frekvence hlášení snižovat. Když se z bety stává RC, je seznam bugreportů téměř prázdný a přichází čas věnovat se běžným denním radostem: proklínání programátorů, co nikdy neslyšeli slovo bigendian, nadávání na vývojáře gcc proměňující warningy v chyby a pročítání požadavků na nové featury s úsměvem, který rychle tuhne na rtech ve chvíli, kdy se za ně postaví management. Patche už nepadají z klávesnic jako mince z kouzelného beránka, kódu použitelného pro původní autory software ale vzniká i tak dost. Za to, že se autoři nemusejí hrabat v chybách, a místo toho se věnují novým vlastnostem, tedy uživatelé vděčí svým distributorům a asi by bylo nemoudré to chtít jinak.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.