Portál AbcLinuxu, 4. června 2024 03:12
Minulý týden v sobotu proběhla akce Positive Vibes 4 v olomoucké Envelopě. Jednalo se o Drum And Bass party, které jsem se nejen zúčastnil, ale zahrál si na house stage. Fotky jsou na sídle YT Promotion.
Hlavní hvěždou večera byl londýnský Aphrodite. Byl jsem docela překvapen, takový třicátník v rozevláté košili, hrál velmi pestrý set plný nástupů a různých pecek. V hale bylo totálně narváno a až na problémy s teplotou to byla velmi vyvedená akce. Až jsem z toho na týden onemocněl.
Ten týden jsem se "hrabal" v nejrůznějších věcech na svém Gentoo Linuxu a taky došlo na Portage. Velmi mě štve, jak je tento balíčkovací systém pomalý. Strace ukázal, že kámen úrazu je v adresáři /usr/portage, který se prochází skoro při každé operaci celý.
Ačkoli mi bylo jasné, že díky rsyncu se tohoto uložení vývojáři jen tak nevzdají, jal jsem se zkoumat zdrojový kód systému Portage. Věděl jsem, že je napsaný v Pythonu, takže jsem čekal výborný objektový návrh...
A byl jsem zděšen. Takhle prasácky napsaný program jsem dlouho neviděl. Že je zdroják neuklízený, plný hacků a TODO poznámek by mi ani nevadilo, ale že všechny třídy naplácali vývojáři do jednoho souboru to bylo na mě příliš. Dále pak se mi nezamlouvaly některé "hack"-funkce a ke všemu byl téměř celý kód nedokumentovaný. Korunu tomu nasadila "organizace" výstupů na konzoli:
write( green( "Checking portage...") )
Tomu říkám oddělení uživatelského rozhraní...
Zjistil jsem, že problém rychlosti se již jednou řešil - u stromu závislostí. Je tam možnost použít kromě adresářů s mnoha soubory také formát cpickle nebo anydbm. Ale hlavní bolístka je ve stromu balíčků. Řešení jsem nenalezl.
Open source projekty často potřebují pevnou ruku, někoho, kdo by se ujal těžkého úkolu návrhu programu a dohledu nad dodržováním standardů psaní kódu. Bohužel je až příliš mnoho programů "uháčkovaných".
Tiskni Sdílej:
portagefs
, který by zachovával možnost klasického procházení souborů na disku, ale pro uložení stromu portage by používal databázi.
/usr/portage
, jako by to byly soubory a adresáře (ani by nevadilo, kdyby to bylo o něco pomalejší, než klasický fs). Uvnitř by to samozřejmě byla databáze a emerge
by k tomu taky tak přistupoval. Co se týká synchronizace dat, ta se dá udělat přes rsync
i u binárních souborů, v tom by neměl být problém.
/usr/portage
?! 4 minuty stará má 84 MB. Nezapletly se do tvého měření adresáře jako "packages" (binární balíčky) a "distfiles" (stažené zdroje) ??
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.