Share to: share facebook share twitter share wa share telegram print page

GoboLinux

GoboLinux
A GoboLinux 016-os verziójának alapértelmezett asztali környezete
A GoboLinux 016-os verziójának alapértelmezett asztali környezete
FejlesztőHisham Hashem Muhammad, André Detsch és a GoboLinux közösség
Forráskódnyílt forráskódú
OS-családGNU/Linux
Stabil verzió017
(2020. május 24.)
Kernelmonolitikus (Linux)
Felhasználói felületAwesome (alapértelmezett ablakkezelő)
Elérhetőangol, német, magyar, portugál, spanyol és számos egyéb
LicencVáltozatos, főként GPL
Státuszaktív fejlesztés alatt
Weboldalwww.gobolinux.org

A GoboLinux egy rendkívül egyedi, alternatív Linux-disztribúció, amely alapjaiban definiálja újra a hagyományos Unix-szerű rendszerekben megszokott fájlrendszer-hierarchiát. A disztribúció legfőbb megkülönböztető jegye, hogy szakít a Filesystem Hierarchy Standard (FHS) konvencióival, és minden programot a saját, izolált könyvtárába telepít. Ennek a forradalmi megközelítésnek köszönhetően a GoboLinuxban nincs szükség a hagyományos értelemben vett csomagkezelő adatbázisra, mivel maga a fájlrendszer tölti be ezt a szerepet: a telepített programok listája, verziója és a hozzájuk tartozó fájlok egyszerűen a /Programs könyvtár tartalmának listázásával áttekinthetők.

Fejlesztők

A GoboLinux-projekt alapötlete Hisham Hashem Muhammad nevéhez fűződik, aki André Detsch-csel közösen hozta létre a disztribúció első, korai verzióját. A projekt születésének körülményeit Hisham Muhammad a következőképpen foglalta össze:

„Az egész úgy kezdődött, hogy egyszerűen programokat kellett telepítenem közönséges felhasználóként az egyetemen, ahol nem rendelkeztem root jogosultságokkal a hagyományos Linux könyvtárszerkezet módosításához. Ez kiváló alkalmat teremtett a fájlrendszer újragondolására. Egy nap, miután a számítógépemen bekövetkezett a „Nagy Fájlrendszer Pusztulása”, az egész rendszert újra kellett telepítenem. Ekkor döntöttünk úgy, hogy az alternatív könyvtárstruktúra ötletét teljes mértékben megvalósítjuk az új rendszeren. André szintén a Linux-rendszerének újratelepítését fontolgatta, így egy hétvégén összegyűltünk a házában, és végigcsináltuk a teljes Linux From Scratch folyamatot, miközben azt a mi elképzeléseink szerint módosítottuk. Az eredményt tréfásan GoboLinuxnak neveztük el, és ahogy az lenni szokott, a név végül rajtamaradt.”

– Hisham Hashem Muhammad

A kezdeti időszakot követően a projekt egy nemzetközi fejlesztői közösséggé nőtte ki magát, amely folyamatosan karbantartja és bővíti a rendszert.

Leírása

A GoboLinux egy moduláris felépítésű Linux-disztribúció, amely a telepített szoftvereket egy forradalmian új, logikus és átlátható módon szervezi. Ahelyett, hogy egy program komponenseit szétszórná a rendszer különböző pontjain – például a futtatható állományokat a /usr/bin, a konfigurációs fájlokat az /etc, az egyéb erőforrásokat pedig a /usr/share alá –, minden egyes alkalmazás a saját, dedikált könyvtárába kerül. Ez a megoldás nemcsak a programok közötti tiszta elkülönítést biztosítja, hanem rendkívül egyszerűvé és magától értetődővé teszi annak megállapítását, hogy mely szoftverek vannak telepítve, és az egyes fájlok melyik alkalmazáshoz tartoznak.

Annak érdekében, hogy a rendszer a széttagolt programfájlokat mégis megtalálja, a GoboLinux egy logikai csoportosítást alkalmaz szimbolikus linkek segítségével. A különböző típusú fájlok (futtatható állományok, könyvtárak, fejlécfájlok stb.) kategóriák szerint vannak rendezve a /System/Links könyvtár alatt. Például a /System/Links/Executables könyvtárban szimbolikus linkek mutatnak a /Programs alatt található összes végrehajtható állományra.

A hagyományos Unix/Linux alkalmazásokkal való teljes körű kompatibilitás fenntartása érdekében a rendszer olyan szimbolikus linkeket is tartalmaz, amelyek a szabványos Unix-könyvtárakat emulálják. Például a /usr/bin és a /sbin egyaránt a /System/Links/Executables könyvtárra mutat. Ez a megoldás kiküszöböli az azonos kategóriájú fájlok közötti önkényes megkülönböztetéseket, amelyek gyakran inkonzisztenciához vezetnek más disztribúciókban.

A GoboLinux rendszer gyökérkönyvtárának struktúrája a következőképpen néz ki:

~] cd /
/] ls
Depot
Files
Mount
Programs
System
Users

A /Programs könyvtár tartalmazza az összes telepített programot, kivétel nélkül. A telepített alkalmazások listázása egyszerűen egy parancs kiadásával lehetséges:

/] cd /Programs
/Programs] ls

Minden programbejegyzés egy alkönyvtár, amelyen belül további, verziószámmal ellátott alkönyvtárak találhatók. Ez lehetővé teszi, hogy egy program több különböző verziója is egyszerre jelen legyen a rendszeren.

/Programs] find Bash
Bash
Bash/5.1
Bash/5.1/bin
Bash/5.1/bin/sh
Bash/5.1/bin/bash
Bash/5.1/bin/bashbug
Bash/5.1/info
Bash/5.1/info/bash.info
Bash/5.1/man
Bash/5.1/man/man1
Bash/5.1/man/man1/bash.1
…

A rendszer rugalmasságát jól mutatja, hogy ugyanazon szoftver több verziója is telepíthető párhuzamosan, és a felhasználó könnyedén válthat közöttük, vagy akár egyszerre is használhatja őket. A `Current` szimbolikus link mindig az aktívnak kijelölt verzióra mutat.

/Programs] ls -l LibreOffice
total 8
drwxr-xr-x  9 root root 4096 2023-10-21 01:07 7.5.2
drwxr-xr-x  3 root root 4096 2023-11-15 04:36 7.6.1
lrwxrwxrwx  1 root root    5 2023-11-15 04:36 Current  7.6.1

/Programs] ls -l GTK3
total 12
drwxr-xr-x  10 root root 4096 2023-09-02 01:39 3.24.30
drwxr-xr-x   9 root root 4096 2023-10-21 05:48 3.24.38
lrwxrwxrwx   1 root root    7 2023-10-21 05:48 Current  3.24.38
drwxr-xr-x   4 root root 4096 2023-10-21 01:39 Settings

Működése

Ahelyett, hogy a rendszer egy központi adatbázisban tartaná nyilván a telepített csomagokat és a hozzájuk tartozó fájlokat, a GoboLinux magát a fájlrendszert használja erre a célra. A fájlokat kategóriák szerint indexeli szimbolikus linkek segítségével, hogy a rendszer gyorsan és hatékonyan megtalálhassa őket anélkül, hogy végig kellene keresnie az összes programkönyvtárat. Ez a megközelítés elegáns megoldást kínál a „Melyik csomaghoz tartozik az XYZ fájl?” klasszikus problémájára is: a link céljából egyértelműen kiderül a fájl eredete.

A rendszer úgy van konfigurálva, hogy a fájlok keresésekor ezeket a linkelt könyvtárakat használja. A rendszerben minden fájltípushoz létezik egy megfelelő kategória: futtatható állományok, programkönyvtárak (library), fejlécfájlok, megosztott adatfájlok, kézikönyvoldalak (man pages) és így tovább.

A link-alapú indexelés másik fontos előnye, hogy a rendszer integritása könnyen ellenőrizhető. Ha egy programot eltávolítanak, a rá mutató szimbolikus linkek automatikusan „törötté” (broken link) válnak, és ezáltal inaktívvá lesznek. Ez a mechanizmus nagyban leegyszerűsíti a hibák felderítését, és biztosítja, hogy a rendszer állapota mindig szinkronban legyen a valósággal. Így elkerülhetők azok a helyzetek, amikor egy csomagkezelő egy hiányzó függőségre panaszkodik, holott a felhasználó biztos benne, hogy az telepítve van. A GoboLinuxban ha egy link él, akkor a fájl létezik – és fordítva.

Unix-kompatibilitás

A GoboLinux könyvtárstruktúrája első pillantásra radikális eltérésnek tűnhet a Unix hagyományaitól. Felmerülhet a kérdés, hogy ez azt jelenti-e, hogy minden programot módosítani kell az új hierarchiával való együttműködéshez. Szerencsére a válasz egyértelműen nem. A hagyományos elérési utakat a GoboLinux-struktúrára mutató szimbolikus linkekkel oldják meg, így a kompatibilitás a Unix-örökséggel transzparens módon megmarad.

A gyakorlatban ez azt jelenti, hogy a /bin, a /usr/bin és a /usr/sbin mind a /System/Links/Executables könyvtárra mutatnak. Az összes futtatható állományt tartalmazó hagyományos könyvtár ugyanarra a központi helyre van irányítva. Ez meglepő módon a GoboLinuxot bizonyos esetekben még a hagyományosabb disztribúcióknál is kompatibilisebbé teszi, mivel kiküszöböli azokat a problémákat, amikor egy szkript azért nem fut, mert például egy fájlra az /usr/bin/foo helyen hivatkozik, miközben az valójában az /usr/local/bin/foo útvonalon található.

A szabványos Unix-útvonalak alapértelmezés szerint nem láthatók a gyökérkönyvtárban. Valójában ott vannak, de a GoboHide nevű, opcionális kernel patch elrejti őket a felhasználó elől. Ez a funkció elsősorban esztétikai célokat szolgál, és használata nem kötelező. A GoboLinux működéséhez nincs szükség sem a kernel, sem más rendszerkomponensek módosítására, de a GoboHide egy letisztultabb és rendezettebb felhasználói élményt nyújt.

A leggyakoribb kifogás a GoboLinux ellen

A GoboLinux ellen leggyakrabban felhozott kritika az, hogy könyvtárszerkezete nem POSIX-kompatibilis. Ez azonban egy tudatos tervezési döntés eredménye. Az okokról a rendszer megalkotója, Hisham Muhammad adja a legpontosabb magyarázatot:

"Mindennek oka van. A /, /usr és /usr/local, illetve a /bin és /sbin közötti hagyományos megkülönböztetés történelmi okokra vezethető vissza. Én is értem ezeket a különbségeket. Azért szüntettem meg ezt a többszintű elkülönítést, mert hiszek abban, hogy a mögöttes problémákra léteznek modernebb megoldások. Egy GoboLinux rendszerben nincs szükség külön /usr és /usr/local könyvtárakra azért, hogy elkülönítsük a disztribúció által biztosított programokat a felhasználó által fordítottaktól. Itt minden program természetes módon, a saját könyvtárában van izolálva – ez volt a GoboLinux létrehozásának egyik legfőbb mozgatórugója.

A történelmi ok, amiért egyes Unix-könyvtárak (/bin, /lib, /sbin) közvetlenül a gyökérből erednek, az az volt, hogy egyfelhasználós módban, a /usr csatolása nélkül is lehessen a rendszert javítani. Ez mára már inkább egy dogmatikus elv. Ha ma rendszermentésre van szükségem, egy teljes értékű grafikus környezetet biztosító LiveCD-t használok, amellyel böngészhetek az interneten megoldások után kutatva. A régi módszernek évtizedekkel ezelőtt volt értelme, de ma már sokkal hatékonyabb eszközök állnak rendelkezésünkre.

A bin és sbin megkülönböztetése a mai kontextusban szintén elvesztette jelentőségét. A történelmi evolúció olyan önkényes besorolásokhoz vezetett, mint a ping és a traceroute külön könyvtárba helyezése. Egy Unix-rendszer a jogosultságokon alapul. Ha egy parancsot csak a rendszergazda futtathat, arra a chmod 700 parancs a megoldás.

Végül, ami a partíciók szétválasztását és a távoli menedzsmentet illeti: a kritikusok legjogosabb aggodalma a hálózaton megosztott programkönyvtárak kezelése. A leggyakoribb érv erre az, hogy „a merevlemezek ma már olcsók”. Bár ezzel egyetértek, megértem a központosítás iránti igényt is. Szerencsére a technológiai fejlődés erre is kínál megoldást: az „union mount” és az „overlay filesystem” (rétegelt fájlrendszer). Az ötlet lényege, hogy több partíciót is felcsatolhatunk ugyanabba a könyvtárba. Így a /Programs megőrzi azt a jelentését, hogy „a rendszerben elérhető összes program gyűjteménye”, függetlenül azok fizikai helyétől. Az operációs rendszerek, mint a Plan 9, már régóta alkalmaznak hasonló elveket."

A GoboLinux projekt célja

A fejlesztők elsődleges célja egy olyan rendszer létrehozása, amelyet ők maguk is szívesen használnak, és amely nem próbálja meg helyettük adminisztrálni a gépet. Míg a legtöbb Linux-disztribúció igyekszik leegyszerűsíteni a kezdő felhasználók dolgát, ez gyakran a tapasztaltabb felhasználók számára jelent korlátokat. A GoboLinux nem állítja magáról, hogy könnyebb, csupán azt, hogy logikusabb és átláthatóbb. A felhasználói visszajelzések szerint a rendszer adminisztrációja valóban egyszerűbb, mivel a felépítése lehetőséget ad a mélyebb megértésre – feltéve, hogy a felhasználó hajlandó időt szánni erre.

A /Depot és a /Files könyvtárak

A /Depot egy szabadon felhasználható terület a felhasználói adatok, például dokumentumok, médiafájlok vagy letöltött anyagok tárolására. Tekinthetünk rá egyfajta „közösségi területként”, amely minden felhasználó számára elérhető (hasonlóan a régebbi Unix rendszerek /pub könyvtárához). A GoboLinux rendszer maga nem használja a /Depot tartalmát; a könyvtár célja, hogy ösztönözze a felhasználókat az adatok rendezett tárolására, és tisztán tartsa a rendszer többi részét.

A /Files ezzel szemben egy szabványos GoboLinux könyvtár, amely programok által közösen használt, de egyikhez sem szorosan tartozó adatokat tartalmaz. Ilyenek például a betűtípusok (Fonts), bővítmények (Plugins) vagy kodekek. Az alkalmazások itt saját alkönyvtárakat is létrehozhatnak helyspecifikus adatok tárolására.

A GoboLinux könyvtárszerkezetének részletesebb bemutatása

A GoboLinux kialakítását olyan korábbi operációs rendszerek is inspirálták, mint a NeXT, az AtheOS és a BeOS, amelyek szintén újszerű könyvtárszerkezeteket vezettek be, miközben megőrizték a Unix-kompatibilitást. A GoboLinux gyökérkönyvtára hat fő könyvtárból áll.

  • /Programs/ – Ez a könyvtár tartalmazza az összes telepített programot, mindegyiket egy külön alkönyvtárban. Minden programkönyvtáron belül verziószámmal ellátott alkönyvtárak találhatók (pl. /Programs/GCC/13.2.0), valamint opcionálisan egy Settings és egy Variable alkönyvtár a konfigurációs, illetve a változó adatok számára.
  • /Users/ – Ebben a könyvtárban találhatók a felhasználók saját (home) könyvtárai. Például a "bob" nevű felhasználó könyvtára az /Users/bob útvonalon érhető el.
  • /System/ – A kritikus rendszerfájlok helye. Ezt leginkább a rendszeralkalmazások (pl. /System/Settings/passwd) és a GoboLinux saját szkriptjei használják.
   *   Links/ – Olyan könyvtárakat tartalmaz, amelyek szimbolikus linkek segítségével indexelik a /Programs alatt található fájlokat.
       *   Executables/ – Linkek a programok végrehajtható állományaihoz.
       *   Libraries/ – Linkek a programok `lib` könyvtáraiban található megosztott könyvtárakra.
       *   Headers/ – Linkek a programok `include` könyvtáraiban található fejlécfájlokra.
       *   Shared/ – Linkek a programok `share` könyvtáraiban található adatokra.
       *   Manuals/ – A `man` és `info` oldalak linkjeit tartalmazza.
   *   Settings/ – Rendszerszintű konfigurációs fájlok és linkek a programok `Settings` könyvtáraira.
       *   BootScripts/ – A rendszerindítás során használt szkriptek.
   *   Variable/ – Változó adatokat tartalmazó könyvtárak: ideiglenes állományok, naplófájlok (log) és egyéb dinamikus adatok.
       *   tmp/ – Ideiglenes fájlok.
   *   Kernel/ – A rendszermaghoz (kernel) kapcsolódó könyvtárak.
       *   Boot/ – A rendszerindításhoz szükséges programok és konfigurációs fájlok, beleértve a rendszermagot és a rendszerbetöltő beállításait.
       *   Devices/ – Eszközfájlok, amelyeket az `udev` rendszer kezel.
       *   Modules/ – A kernelverziókhoz tartozó modulok.
       *   Objects/ – A kernel-eszközökről nyújt információt (a `sysfs` fájlrendszeren keresztül).
  • /Files/ – Olyan strukturált adatokat tartalmaz, amelyeket több alkalmazás is használhat, de nem képezik szerves részét egyiknek sem (pl. betűtípusok, témák, ikonok).
  • /Mount/ – További helyi vagy hálózati fájlrendszerek csatolási pontja (pl. CD-ROM, Pendrive).
  • /Depot/ – A felhasználók által közösen használt fájlok tárolóhelye.

Csomagkezelés a GoboLinux alatt

A GoboLinux csomagkezelési filozófiája alapvetően eltér a többi Linux-disztribúcióban megszokottól. A rendszer forráskód-alapú, ami azt jelenti, hogy a programok telepítése elsősorban a fejlesztők által közzétett eredeti forráskódokból történik, automatizált fordítási folyamattal.

Ez a folyamat az úgynevezett „recepteken” (recipes) alapul. Egy recept egy egyszerű szkript, amely leírja, hogyan kell egy adott programot letölteni, kicsomagolni, konfigurálni, lefordítani és telepíteni a GoboLinux-struktúrába. A GoboLinux központi recepttárolója több ezer programhoz tartalmaz ilyen szkripteket. A `Compile` nevű eszköz a csomagkezelés központi parancsa.

Lássuk a programok telepítésének főbb módjait:

Telepítés forráskódból recepttel

Ez a leggyakoribb és leginkább ajánlott módszer. Root jogosultságokkal a következő parancsot kell kiadni:

Compile XY

Ez a parancs letölti az XY program legfrissebb verziójához tartozó receptet, majd annak alapján automatikusan letölti a forráskódot a fejlesztő hivatalos oldaláról, és elvégzi a teljes fordítási és telepítési folyamatot. Ha egy konkrét verzióra van szükség:

Compile XY 2.0.1

Bináris csomag telepítése

Bár a GoboLinux elsősorban forrásalapú, léteznek előre lefordított bináris csomagok is a gyorsabb telepítés érdekében.

InstallPackage XY

Ez a parancs letölti és telepíti az XY program legfrissebb elérhető bináris csomagját.

Telepítés forráskódból recept nélkül

Ez a módszer haladó felhasználóknak ajánlott, és teljes kontrollt biztosít a fordítási folyamat felett. A lépések a következők: 1. A forráskód letöltése és kicsomagolása. 2. PrepareProgram -t XY 2.0.1 – Létrehozza a programkönyvtárakat. 3. PrepareProgram XY 2.0.1 – Futtatja a konfigurációs szkriptet a megfelelő paraméterekkel. 4. make – Lefordítja a programot. 5. SandboxInstall XY 2.0.1 – A lefordított fájlokat a megfelelő helyre másolja. 6. SymlinkProgram XY – Létrehozza a szükséges szimbolikus linkeket a /System/Links alatt.

Programok kezelése

  • Program letiltása: A DisableProgram XY verziószám parancs törli a program szimbolikus linkjeit, így az „láthatatlanná” válik a rendszer számára, de a fájljai megmaradnak.
  • Program engedélyezése: A letiltott program a SymlinkProgram XY verziószám paranccsal újra aktiválható.
  • Program eltávolítása: A RemoveProgram XY verziószám parancs véglegesen törli a program összes fájlját a /Programs könyvtárból.
  • Törött linkek eltávolítása: A find /System/Links -type l -xtype l -exec rm {} + vagy a disztribúció-specifikus `RemoveBroken` parancs segítségével a már nem létező fájlokra mutató linkek eltávolíthatók.

Bár léteztek kísérletek grafikus csomagkezelő felületek, mint például a `Manager` létrehozására, a GoboLinux csomagkezelésének legstabilabb és leginkább támogatott módja továbbra is a parancssori eszközök használata.

A GoboLinux kritikája

A GoboLinux egyedi felépítése miatt gyakran éri kritika, hogy eltér a bevett Unix-szabványoktól. Emellett a projektet egy viszonylag kis, de elkötelezett közösség tartja életben. Ez a tény hatással van a fejlesztés ütemére: a stabil kiadások ritkábban jelennek meg, és a hivatalos recepttároló mérete elmaradhat a nagyobb disztribúciók (pl. Debian, Arch Linux) csomagválasztékától. Ugyanakkor a receptek egyszerűsége lehetővé teszi a felhasználók számára, hogy viszonylag könnyen készítsenek saját szkripteket a hiányzó programokhoz.

Honosítás / Magyarítás

A projekt nemzetközi jellegéből adódóan a GoboLinux, más modern Linux-disztribúciókhoz hasonlóan, teljes mértékben támogatja a honosítást. A telepítés alapértelmezett nyelve az angol, de a rendszer teljes egészében magyarítható a szabványos lokalizációs csomagok telepítésével és a rendszerbeállítások megfelelő konfigurálásával. A modern verziók teljes körű UTF-8 támogatással rendelkeznek, így a magyar karakterek helyes megjelenítése mind a grafikus felületen, mind a parancssorban biztosított. A népszerű asztali környezetek (mint a KDE vagy az Xfce) és alkalmazások (mint a LibreOffice vagy a Mozilla Firefox) magyar nyelvi csomagjai a `Compile` rendszeren keresztül egyszerűen telepíthetők.

Források

Kapcsolódó cikkek

További információk

Commons:Category:GoboLinux
A Wikimédia Commons tartalmaz GoboLinux témájú médiaállományokat.
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya