A Linux felfedezése folytatódik

Németh Balázs, 2001. június 15. 13:02
A Linuxot használók tapasztalatai szerint a konkurens operációs rendszerekről áttérő felhasználók nehezen barátkoznak meg a "csomagfilozófiára" épülő gondolkodásmóddal. Természetesen a Linux - akár az egyéb operációs rendszerek - a gyakorlatban egész jól használható anélkül, hogy tisztában lennénk egyes alapvető fogalmakkal, de igazán akkor használhatjuk ki az általa kínált előnyöket, ha kezdettől fogva értően használjuk a felépítmény egyik meghatározó elemét.
Sorozatunk mostani részében a csomagok lényegének megértését, a következő cikkben használatuk elsajátítását kívánjuk elősegíteni.

A Linux-disztribúciókban az "összetartozó" fájlokat - ez alatt egy programot vagy programcsomagot alkotó fájlok összességét kell érteni - összegyűjtik, és ún. csomagokba (package) rendezik. A működő Linux-rendszer ilyen csomagokból épül fel, minden csomag egy-egy építőkocka a rendszeren belül. A csomagkezelés nem más, mint a feltelepített csomagokról - és ennek révén a telepített fájlokról - vezetett központosított nyilvántartás.

Kezdetben nem volt csomagkezelés a Linuxban. Ha egy programot telepítettünk, a szoftver akár több száz fájlt is felrakott különböző könyvtárakba. A program eltávolításakor azonban szinte lehetetlen volt az összes feleslegessé vált fájlt "lepucolni". Probléma volt az is, hogy az ős-Linux nem készített nyilvántartást arról, hogy bizonyos alapvető fájlok - amelyeket különféle programok közösen használnak - telepítve vannak-e, vagy sem (ezek a Windows dll-ekhez hasonló linuxos "so" fájlok).

Ilyen alapvető fájlegyüttes például a (korábban bemutatott) KDE-desktop alapját képező QT grafikus könyvtár (library). Ez olyan alapvető eljárásokat tartalmaz, amelyeket valamennyi KDE-s program használ. Csomagkezelés hiányában nem lehetne tudni (vagy csak körülményes kutakodás árán), hogy a QT fel van-e már rakva. Megtörténhetne, hogy valaki telepíti a KDE-t, de elfelejti a QT-t, és nem indul el egyetlen KDE-program sem. Esetleg minden egyes program(csomag) saját telepítőrutinnal rendelkezne, amelynek magának kellene ellenőriznie az összes telepítéshez szükséges feltétel teljesülését (elegendő szabad terület, függőségek stb.). Ez azonban megsokszorozná a hibák, tévedések lehetőségét - amivel gyakran találkozhatunk a Windowsban.

Két csomagkezelő - egy választás?

E nehézségek kiküszöbölésére fejlesztették ki a csomagkezelő rendszereket. Két jelentős ilyen rendszer létezik, az RPM (RedHat, SuSe, Mandrake - az RPM a RedhatPackageManager rövidítése) és a DEB (Debian, Corel). Szélesebb körű elterjedtsége miatt most csak az RPM-mel foglalkozunk (ez azonban nem jelent semmiféle értékelést vagy állásfoglalást az egyik javára vagy hátrányára).

A központosított csomagkezeléssel megoldódott a telepített fájlok nyilvántartása. Ennek köszönhetően eltávolításkor valamennyi felesleges fájl törlésre kerül - de csakis ezek -, ellenőrizhető, hogy egy program telepítése előtt nem felejtettük-e el installálni annak előfeltételeit (mondjuk a KDE telepítése előtt nem felejtettük-e el felrakni a QT könyvtárat). Megelőzhető, hogy véletlenül olyan fájlokat távolítsunk el, amelyek bizonyos programok működéséhez nélkülözhetetlenek, vagyis nem kerülhetik el a figyelmünket a függőségi (dependency/dependencies) problémák, és végül, de nem utolsósorban, ha rendszerünkben valamely fájl megsérül, elveszik stb., akkor könnyedén kideríthetjük, hogy az adott fájl mely csomag részét képezi, és elegendő ezt a csomagot újratelepíteni a hiba megszüntetéséhez. Ez a lehetőség megfordítva is nagyon hasznos lehet, ha ugyanis valamely program működésében szokatlan problémákat tapasztalunk, a program csomagján végzett automatikus ellenőrzéssel megbizonyosodhatunk arról, hogy nem sérült vagy változott-e meg valamelyik alkotóeleme.

Valamennyi RPM-csomag központi nyilvántartásba kerül, ezen belül csoportokat hoztak létre (alkalmazások, fejlesztés, grafikus felületek stb.), bár ezeknek a csoportoknak a kialakítása és ezeken belül az egyes csomagoknak a besorolása meglehetősen esetleges, de nem is ez a rendszer lényege. A nyilvántartás hasonló a Windows "Programok hozzáadása" vezérlőpultbeli szolgáltatásához, ahol sok telepített program nyilván van tartva, és el is távolíthatjuk őket. De tapasztalati tény, hogy programjaink vagy nyilván vannak tartva, vagy nem, vagy sikerül az eltávolítás, vagy nem - ennél az RPM csomagkezelő sokkal következetesebb és kiforrottabb.

Mit kapunk a csomagban?

Az RPM-csomagokat szemléletesen az önkicsomagoló windowsos EXE-fájlokhoz hasonlíthatnánk, ami a Windows alatti programtelepítés tipikus módja. Az RPM-csomag tartalmaz verzióinformációt, rövid leírást arról, hogy mi van a csomagban (mire tudjuk használni), telepítés utáni méretet, licencinformációt, fájlokat, a fájlok telepítésének pontos helyét (könyvtárát). A telepítés helye általában megváltoztatható, de többnyire nem szükséges - mint ahogyan legtöbbször a Windowsban is megfelelő az alapértelmezett "C:\Program Files" könyvtár. Tartalmazza továbbá annak felsorolását, hogy az adott csomag telepítéséhez mely egyéb fájloknak/csomagoknak kell lenniük installálva (ez a függőség, a KDE-hez már telepítve kell lennie a QT-nek), és végül, de nem utolsósorban tartalmazhat a csomag parancsfájlokat (script), amelyek feladata, hogy elvégezzenek bizonyos módosításokat a rendszerben - ami az újonnan telepített/frissített programok helyes működésének, a régebbi verziókkal való kompatibilitás megőrzésének feltétele lehet.

Az RPM-csomagok tömörített (ZIP-)állományok. Egy 9 megabájtos RPM-csomag akár 18 megabájtnyi fájlt is felrakhat a telepítés során. A felhasználóknak egyébként többnyire egyáltalán nem kell foglalkozniuk azzal, hogy pontosan mi van a csomagban, csak azzal, hogy ne legyenek függőségi problémák.

A csomag akár egyetlen, akár több, logikailag összetartozó programot és azok valamennyi fájlját is tartalmazhatja. Például a "krusader" csomag csak a Windows Commander Krusader nevű Linux-klónját tartalmazza, míg a "kdeutils" csomag magában foglalja a "kcalc" számológépet, a "kedit" egyszerű szövegszerkesztőt, a "kfind" fájlkereső programot stb., valamint ezek valamennyi program-, súgó-, ikon-, hang-, illetve konfigurációs fájlját.

(Következő számunkban a csomagkezeléshez kapcsolódó kezelőprogramok, a telepítés, a frissítés és az eltávolítás bemutatásával, valamint a függőségi problémákkal kapcsolatos ismertetővel folytatjuk a sorozatot, és válaszolunk a beérkezett kérdésekre is.)