Mi az a csomagkezelő?
Egyszerűbben megfogalmazva, a csomagkezelő egy olyan eszköz, amely lehetővé teszi a felhasználók számára, hogy szoftvercsomagokat telepítsenek, eltávolítsanak, frissítsenek, konfiguráljanak és kezeljenek az operációs rendszeren. A csomagkezelő lehet grafikus alkalmazás, mint például a szoftverközpont, vagy parancssori eszköz, mint az apt-get vagy a pacman. A cikkekben és útmutatókban gyakran találkozol majd a „csomag” kifejezéssel. Ahhoz, hogy megértsd a csomagkezelőt, először is fontos tudnod, mi is az a csomag.
Mi az a csomag?
A csomag általában egy alkalmazásra utal, de lehet grafikus felhasználói felülettel (GUI) rendelkező alkalmazás, parancssori eszköz vagy szoftverkönyvtár, amelyet más programok használnak. A csomag lényegében egy archív fájl, amely tartalmazza a bináris futtatható állományt, a konfigurációs fájlokat, és néha a függőségekkel kapcsolatos információkat is. Régebben a szoftvereket forráskódból kellett telepíteni. Egy fájlban (általában „readme” néven) találtad meg, hogy milyen szoftverkomponensekre van szükség, valamint a binárisok helyét. Egy „configure” szkript vagy „makefile” fájl is gyakran mellékelve volt. A szoftvert neked kellett lefordítanod, és a függőségeket (egy szoftver más programok telepítését is megkövetelheti) is neked kellett kezelned.
Ennek a bonyolultságnak az elkerülése érdekében a Linux disztribúciók saját csomagformátumokat hoztak létre, hogy a végfelhasználók előre lefordított bináris fájlokat (precompiled software) kapjanak, amelyek a telepítéshez szükségesek. Ezek a csomagok tartalmazzák a metaadatokat (pl. verziószám, leírás) és a függőségeket is. Ez olyan, mintha magad sütnél egy tortát a hozzávalókból, vagy vennél egy kész tortát.
Forráskód fordítása vs. csomagkezelés Linuxban
A 90-es évek közepén a Debian létrehozta a .deb vagy DEB csomagformátumot, míg a Red Hat Linux az .rpm vagy RPM (Red Hat Package Manager rövidítése) csomagkezelő rendszert alkotta meg. A forráskód fordítása még ma is létezik, de már nem kötelező.
A csomagkezelő rendszerek használatához vagy a velük való interakcióhoz csomagkezelőre van szükséged.
Hogyan működik a csomagkezelő?
Ne feledd, hogy a csomagkezelő egy általános koncepció, és nem kizárólag a Linuxra jellemző. Számos más szoftver vagy programozási nyelv is használ csomagkezelőt. Például a PIP csomagkezelő kifejezetten a Python csomagok kezelésére szolgál. Az Atom szerkesztőnek is van saját csomagkezelője.
Mivel a cikk főként a Linuxra koncentrál, most Linux nézőpontjából vizsgáljuk meg a csomagkezelést. Az itt elhangzott magyarázatok azonban általánosan alkalmazhatók más csomagkezelőkre is.
A csomagkezelő működése
Majdnem minden Linux disztribúció rendelkezik szoftvertárakkal, amelyek alapvetően szoftvercsomagok gyűjteményei. Több szoftvertár is létezhet. Ezek a tárak különböző típusú szoftvercsomagokat tartalmaznak. A tárak metaadatfájlokat is tartalmaznak, amelyek információkat tartalmaznak a csomagokról, mint például a csomag neve, verziószáma, leírása és a tár neve. Ez az, amit látsz, ha például az apt show parancsot használod Ubuntu/Debian rendszeren. A csomagkezelő először a metaadatokat kérdezi le. A csomagkezelő létrehoz egy helyi metaadat-gyorsítótárat a rendszereden. Amikor futtatod a csomagkezelő frissítési opcióját (például az apt update parancsot), frissíti ezt a helyi gyorsítótárat a tárolóból származó metaadatok alapján.
Amikor futtatod a csomagkezelő telepítési parancsát (például: apt install csomagnév), a csomagkezelő ehhez a gyorsítótárhoz fordul. Ha megtalálja a csomag információit a gyorsítótárban, az internetkapcsolatot használva csatlakozik a megfelelő tárolóhoz, letölti a csomagot, majd telepíti a rendszeredre. Egy csomagnak lehetnek függőségei, azaz szüksége lehet más csomagok telepítésére. A csomagkezelő általában gondoskodik a függőségekről, és automatikusan telepíti azokat a csomaggal együtt.
Hasonlóképpen, ha eltávolítasz egy csomagot a csomagkezelővel, az vagy automatikusan eltávolítja, vagy értesít, hogy a rendszereden vannak nem használt csomagok, amelyeket törölhetsz.
A csomagok telepítésén és eltávolításán kívül a csomagkezelővel konfigurálhatod és menedzselheted a csomagokat az igényeid szerint. Például megakadályozhatod egy csomag verziójának frissítését a rendszeres rendszerfrissítésekkel együtt. A csomagkezelőd számos egyéb funkcióra is képes lehet.
A csomagkezelők különböző típusai
A csomagkezelők a csomagkezelési rendszerek alapján különböznek egymástól, de ugyanaz a csomagkezelési rendszer is többféle csomagkezelőt használhat. Például az RPM rendszerhez a Yum és a DNF csomagkezelők tartoznak. A DEB rendszerhez az apt-get, az aptitude parancssori csomagkezelők érhetők el. A csomagkezelők nem feltétlenül parancssori alapúak. Léteznek grafikus csomagkezelő eszközök is, mint például a Synaptic. A disztribúciód szoftverközpontja is egy csomagkezelő, még akkor is, ha a háttérben az apt-get vagy a DNF parancsokat futtatja.