Hlavní navigace

Distribuce slučují adresáře /lib a /usr/lib, je to dobrý nápad?

20. 7. 2012
Doba čtení: 5 minut

Sdílet

Distribuci Archlinux se v minulých dnech dostalo aktualizace balíčku glibc, která mnoha uživatelům, nečtoucím novinky na webu Archlinuxu, způsobila problémy s jejich systémem. Problém způsobil přesun /lib a /bin do adresáře /usr. Nápad pochází od Fedory, resp. z kanceláří Red Hatu, tak se na něj podívejme blíže.

Linuxu už od pradávna vládne Filesystem Hierarchy Standard (FHS). Každá linuxová distribuce z něj vychází a i přes menší rozdíly můžeme říct, že v tomto jsou distribuce stejné. Běžná adresářová struktura v Linuxu pak vypadá třeba takto:

/
|- bin              základní nástroje
|- boot             obrazy a konfigurace pro nutné pro zavedení systému
|- dev              soubory zařízení
|- etc              konfigurace systému
|- home             domácí adresáře uživatelů
|- lib              základní knihovny
|- mnt              připojená zařízení
|- opt              programy třetích stran
|- root             domácí adresář roota
|- sbin             základní nástroje dostupné rootovi
|- tmp              dočasné soubory
|- usr              programy a jejich data
   |- bin           nainstalované programy
   |- games         hry
   |- include       hlavičkové soubory
   |- lib           knihovny
   |- local         programy, které nepřišly z balíčků
   |- sbin          programy určené pro spuštění se superuživatelskými právy
   |- share         data aplikací, nezávislé na architektuře
   |- src           zdrojové kódy
|- var              data, která se mění 

Strukturu jsem trochu zjednodušil. Jak vypadá kompletně, se můžete podívat do svého systému nebo na odkazovanou wiki stránku, kde jsou další adresáře i s komentářem. Tato struktura kopírovala potřeby doby, kdy měla záznamová média a disky maximálně několik MB a někdy bylo nutné systém spustit třeba z diskety. V takovém případě bylo žádoucí, aby se oddělily programy, které jsou potřeba pro samotný boot systému od těch, které mají sloužit uživateli. Snahou bylo zjednodušit práci uživatelům, správcům i vývojářům.

Unixový svět se posunul trochu dál a dneska už jen sotva narazíme na konfiguraci, kde by bylo /usr na jiném oddíle nebo dokonce na jiném disku, než je kořenový adresář. Oddělení základních nástrojů možná umožňuje systém rozkouskovat na menší části, ale reálné nasazení, kde je oddělení opravdu nutné, s tím se setkáme jen zřídka.

Změna, která byla popsána v úvodu článku, kdy se /lib a /bin přesunují do /usr v Archlinuxu, je důsledkem vývoje v Red Hatu. Všechny důležité informace najdete na Feodra wiki na stránce UsrMove. Podle lidí kolem Archlinuxu pracuje Red Hat na většině základních knihoven a nástrojích pro Linux a pokud se někdo rozhodne nedržet se jeho vedení, bude muset řešit problémy, o které nestojí. Vývojáři Archlinuxu se ke změně vyjádřili ve svém fóru a ať už jejich důvody vypadají jakkoli, oni vědí proč to udělali, co tím ztratí a hlavně co tím získají. Jeden z uživatelů argumentuje standardem FHS a vysvětluje důvody, proč by se ho Archlinux měl držet. Na to mu Tom Gundersen, vývojář Archlinuxu, reaguje vcelku dlouhým vysvětlením.

Nezajímá nás FHS. Je zastaralé, irelevantní a mrtvé. Na čem záleží, je, s čím budou pracovat distribuce a co dává smysl z praktického hlediska, ne nějaké rozhodnutí schválené před lety. Co jsou základní nástroje pro jeden systém, nemusí být základní nástroje pro druhý. V praxi oddělení /lib a /usr/lib nikdy nefungovalo tak, jak mělo (tzn. fungovalo to dobře ve většině případů a protože většina lidí nemá /usr oddělené, bylo uživatelů s problémy velmi málo, ale koncepčně to bylo rozbité, jak jen pamatuji). Naše výchozí initrd má podporu pro připojení odděleného /usr, takže není důvod, proč by měl být systém bootovatelný s odpojeným /usr (hodně běžně používaných programů přestane správně pracovat, pokud je /usr prázdné, nehledě na to, kde má uložené knihovny). My chceme mít pouze jeden adresář s knihovnami a jeden s binárkami. Dříve tu byly důvody pro oddělení binárek a knihoven, ale ty už nejsou aktuální, takže chceme mít systém jednoduchý a zahodit rozdíly. Neznali jsme rozdíly mezi věcmi, které jsou potřeba k bootu a které ne, už dlouhou dobu, i když se mohlo z přítomnosti /lib a /usr/lib zdát, že tomu tak je.

Co změna přinese

Z předchozího odstavce je jasné, že uživatelů se změna většinou nedotkne. V prostředí Archlinuxu možná někteří narazili na problémy při aktualizaci, ale to je věc, se kterou se musí u této distribuce počítat a nedá se považovat za negativum celého sjednocení. Vedle záporných stránek tu jsou i ty dobré. Sjednocení binárek a knihoven je logický krok, který je jen vyústění několikaletého vývoje. Archlinux v tomto běží dopředu a adoptuje změny mnohem rychleji něž ostatní. Nyní bude záležet na dalších distribucích, jak se k celé věci postaví. Možná se pak změní i FHS.

Aby změna nevypadala tak negativně, přinese i nepřehlédnutelné výhody:

  • Oddělení programů, konfigurace a uživatelských dat
  • Zjednodušená adresářová struktura
  • Smazání uměle vytvořených rozdílů mezi knihovnami a programy
  • Větší kompatibilita s buildovacími nástroje (autotools)
  • Minimalizace rozdílů proti ostatní UNIXům
  • Jednodušší kopírování celého systému
  • Díky snapshotům bezpečnější aktualizace celého systému

Za zmínku stojí třeba možnost připojit /usr pouze jako read-only, a to ne k jednomu systému, ale rovnou k několika. To může být realizováno například přes NFS. Na jednotlivých strojích pak jsou pouze data, která se těch strojů týkají. To znamená domácí adresáře uživatelů, obsah /var a hlavně konfigurace v /etc. Bezpečnější by měly být také aktualizace, kdy za použití snapshotů, ať už přes Btrfs nebo LVM, půjde uložit aktuální stav všech programů a knihoven, aniž by se musel vytvářet snapshot celého systému. Podobnou změnou v minulosti prošly další UNIXové systémy, například Solaris, takže sloučení adresářů pod /usr bude mít pozitivní vliv i na kompatibilitu.

CS24_early

Shrnutí

Spojení adresářů /lib a /bin je diskutovanou změnou nejen v Archlinuxu, ale také u Fedory a RHEL. Vývojáři nejsou za jedno, zda je to dobrý nápad nebo není a na obou stranách jsou logické argumenty. Z pohledu vývojářů Archlinuxu jde o logický a odůvodněný krok, na druhou stranu uživatelé Archlinuxu to mohou vnímat jako překážku. Najednou po nich distribuce chce, aby se něčemu věnovali, a to mohou vnímat jako problém. Pokud ovšem dodržují základní pravidla pro aktualizaci jejich systému, projde vše bez problémů a bez ztráty času. Uživatelé ostatních distribucí spojení pravděpodobně ani nepostřehnou a vývojáři programů ho ocení.

Odkazovaná wiki stránka UsrMove schovává mimo informací o spojení ještě zajímavou diskusi, kde jsou k nalezení další informace a argumenty obou stran.

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.