Csomagtárak

botond küldte be 2022. 05. 29., v – 11:05 időpontban

Tartalom

 

Ismertető

Valamennyi Linux disztribúcióban a rendszerre telepíthető programok szoftvercsomagok formájában kerülnek terjesztésre. A szoftvercsomagok jellemzően egy fájlba csomagolt adatok összessége, amelyek tartalmazzák magát a szoftvert, valamint számos kiegészítő információt (metaadatot) a szoftverrel kapcsolatban, mint például a csomag leírása, telepítőszkriptek, függőségi adatok, stb. A csomagok a telepítés során kibontásra kerülnek, és a benne lévő fájlok az operációs rendszer fájlstruktúrájának megfelelő könyvtáraiba kerülnek.

 

 

Ezek a szoftvercsomagok akár direktben is telepíthetők, ha letöltöttük őket az internetről, vagy egyéb módon a számítógépre juttattuk. Azonban a csomagok közvetlen beszerzése és direkt módú telepítése erősen ellenjavallt, mert ha nem a megfelelő verziót vagy architektúrát szerezzük be, akkor jobb esetben csak hibával kilép a telepítő, de rosszabb esetben hibás működést, csomagfüggőségi problémát is eredményezhet. Továbbá az internetről megbízhatatlan szoftverekhez is juthatunk, amik hozzáférhetnek bizalmas adatainkhoz, vagy akár szándékos kárt is okozhatnak rendszerünk működésében.

A maximális kompatibilitás és biztonság fenntartása érdekében a Linux disztribúciók saját csomagtárakat tartanak fenn, amelyekbe kizárólag szigorú ellenőrzések után kerülhetnek be a szoftvercsomagok. A csomagtárak a csomagok információit tartalmazó csomagadatbázisból, valamint a letölthető bináris csomagfájlok rendszerezett struktúrájából állnak. A Csomagok letöltése, telepítése vagy eltávolítása csomagkezelők segítségével történik. Ilyen csomagkezelő például a Debian/Ubuntu rendszereken a híres APT, amely intelligens konfliktusmegoldási mechanizmussal is rendelkezik, ezáltal a leghatékonyabb Linux csomagkezelők közé sorolják. A grafikus asztalkörnyezetek is tartalmaznak különböző "szoftverközpont" típusú alkalmazásokat, ahol a felhasználók grafikus felületeken kereshetnek, válogathatnak akár több tízezer alkalmazás között, de ezek valójában csak frontend-ek, amelyek ezekre a háttérben működő csomagkezelőkre támaszkodnak.

Külső szoftverkészítők (harmadik féltől származó szofverek) esetében is bevett szokás, hogy ha az adott Linux disztribúció központi, hivatalos csomagtáraiban nem szerepel a szoftvercsomagjuk, akkor pótlásként saját csomagtárat üzemeltetnek, amelyben esetleg több számítógép architektúrához is tárolnak változatokat. Az ilyen csomagtárakat külön be kell állítani az adott Linux disztribúció csomagkezelőjének konfigurációjában, és onnantól már automatikusan töltődnek a frissítések az adott programhoz, amennyiben a készítője feltette a csomagtárába az újabb változatot. Egyik ismertebb példa erre a Google, aki a különböző termékeinek csomagtárakat biztosít. A Google esetében a csomagtárak beállítása az első letöltés és csomagtelepítés során automatikusan megtörténik, de más helyeken kézzel szükséges beállítani a csomagtár hozzáférését.

A csomagtárak - illetve hálózati tükrök (erről lejjebb) - általában a Linux operációs rendszerek telepítésekor kerülnek beállításra, amikor a telepítő információkat gyűjt a számítógépünkről, lokalizációnkról, valamint egyéb bekért adatok alapján beállítja a disztribúcióban használt csomagkezelőt. Természetesen a rendszer használata közben később bármikor módosíthatók ezek a beállítások.

 

Tulajdonságok

A csomagtárak főbb tulajdonságai, előnyei (a teljesség igénye nélkül):

Biztonság

A csomagtárak biztonságát maga a disztribúció és a mögötte álló, illetve az azt fenntartó közösség szavatolja. Ezekben a projektekben a világ számos pontjain vesznek részt, akiknek az a feladatuk hogy az adott disztribúcióban lévő meglévő vagy új szoftvereket, szoftvercsomagokat folyamatosan ellenőrizzék, teszteljék. Ha a közösség bármi olyat észlel egy adott csomaggal kapcsolatban ami miatt nem felel meg a biztonsági előírásoknak, akkor azt jelzik a csomag fenntartójának, fejlesztőjének, aki javítja a hibát. Ez a folyamat teljesen transzparens, így bárki követheti a csomagokban bekövetkezett változásokat, javításokat.

Ennek a szigorú biztonsági folyamatnak köszönhető többek között az is, hogy a Linux rendszereken közismerten minimális, vagy szinte nulla az esélye egy esetleges számítógépes vírus megjelenésének. Természetesen ehhez a felhasználóknak is követniük kell a kizárólag csomagtárból történő telepítés elvét, mert egy ismeretlen helyről letöltött, és kézzel feltelepített csomag bizony jelenthet biztonsági kockázatot.

A csomagtárak hitelességét az úgynevezett aláíró kulcsok (GPG kulcsok) tanúsítják, amelyek letölthetők a csomagtárból és hozzáadhatók a csomagkezelők kulcstárolójához (keyring). A disztribúciók hivatalos csomagtárainak GPG kulcsait a csomagkezelők már alapból megkapják a telepítéskor történő beállítás során. A harmadik felektől származó csomagtárak esetén az üzemeltetők szintén biztosítják saját hitelesítő kulcsaikat, melyeket külön hozzá kell adni a kliens gépen működő csomagkezelő kulcstárolójához az első használat előtt (példa). Az aláírókulcsok meghatározott időre kerülnek kiadásra, így ezek lejárata után frissíteni kell őket (példa).

Kompatibilitás

Az előző tételből adódik, hogy a csomagok ellenőrzése során a szoftvercsomagok kategorizálása, rendszerezése is megtörténik, így kizárólag a felhasználó számítógépén működő Linux disztribúció verziójának és a számítógép architektúrájának megfelelő csomagok kerülhetnek csak letöltésre és telepítésre.

Verziókövetés és frissítés

Itt is az előző tételből adódik, hogy ha egy szoftverből frissebb verzió kerül kiadásra, és az bekerül a csomagtárba, akkor a számítógépen futó csomagkezelő ezt érzékeli, majd jelzi a felhasználónak a frissítés szükségességét, vagy akár a csomagkezelőben beállított szabályok alapján automatikusan frissíti a csomagot. A csak parancssorral rendelkező szerverek esetén a kézi csomagfrissítési mód a bevett szokás, míg a grafikus asztalkörnyezetet használó otthoni vagy irodai számítógépeken pedig automatikus frissítést szoktak beállítani. Ennek köszönhetően a felhasználóknak nem kell a szoftverek újabb verzióit külön keresgélniük és telepíteniük, hanem a csomagtáron keresztül - a csomagkezelő segítségével - ez a folyamat automatikusan lezajlik.

Függőségek kielégítése

Ez inkább a csomagkezelők tulajdonságaihoz tartozik, de részben ide is kapcsolódik.

A legtöbb csomagnak vannak függőségei (package dependency), azaz a csomag metaadata tartalmazza azt az információt is, hogy telepítéséhez és működéséhez mely más csomagokra van szüksége az adott disztribúción belül. Ez egy összetett hierarchikus struktúra, amelyet a csomagtárak adatbázisainak köszönhetően a csomagkezelők könnyen feloldanak és telepítik a szükséges további csomagokat.

Sok csomag azért függ más csomagoktól, mert így a kód jobban kezelhető, karbantartható, valamint újrahasználható, ha csak egy példányban kell telepíteni a gyakran használt kódokat (csomagokat), és a többi csomag azt használja, mintha minden egyes csomag tartalmazná ugyanazt a kódot.

 

 

Ütközések elkerülése

Vannak bizonyos esetek, amikor egy adott csomag nem kompatibilis más csomagokkal, Ilyenkor csomagütközésről beszélünk. Ez olyankor fordulhat elő, ha egy csomag, vagy annak függősége nem telepíthető egy másik csomag megléte miatt. Például ha egy adott hardvereszközt már kezel egy vezérlőprogram, de a telepítendő csomag egy másik vezérlőprogramot igényel ugyanannak a hardvernek a kezelésére (természetesen léteznek ezen kívül más ütközési szituációk is, ez csak egy példa a több lehetőség közül). Ilyen esetekben a csomagkezelőkben felállított szabályrendszer alapján a csomagkezelők intelligens módon elhárítják ezeket a problémákat, például a teljes függőségi lánc feloldásával, alternatívák keresésével, stb. Esetenként a megfelelő döntés meghozatalához felhasználói beavatkozás is szükséges, de a legtöbb helyzetben a csomagkezelők megoldják az ilyen problémákat a háttérben.

Nyitottság

A csomagtárak általában nyitottak, így bárki szabadon hozzájuk férhet, így akár egy böngésző segítségével is lehet tallózni az online csomagtár könyvtárstruktúrájában, csak a csomagtár URL címét kell megadni a böngésző címsorában.

Terheléselosztás (tükrök)

A Linux disztribúciók hivatalos csomagtárai folyamatos igénybevételnek vannak kitéve, mivel egy disztribúció akár több tízezer csomagot is tartalmazhat, melyek használata felhasználónként megoszlik, ezért nagy az esély, hogy megnövekedik a párhuzamos lekérések száma - ezzel egyben a sávszélesség használat is -, ami többnyire a csomagok frissítéseiből adódik. Mindezen felül a Linux rendszereket sok helyen használják szerte a világban, ezért alakult ki az igény arra, hogy a világ több pontjáról is nagy sebességgel lehessen csatlakozni a csomagtárakhoz. Ilyen és ehhez hasonló célokra találták ki a CDN (Content Delivery Network) rendszereket, ahol magas rendelkezésre állású kiszolgálók segítségével osztják el a terhelést a világ több pontján elhelyezett szerverek segítségével. Az ilyen módon működtetett csomagtárakat tükröknek (mirror) nevezik. A tükrök lényege, hogy a háttérben szinkronizálva mindegyik kiszolgáló pontosan ugyanazt a csomagtárat tartalmazza, így a világ bármely pontján lévő tükörszerveren ugyanaz a tartalom érhető el. A Linux telepítők a tükrök kiválasztásakor a felhasználóhoz legközelebb eső csomagtárat ajánlja fel alapértelmezetten. Persze ez nem mindig jelenti azt, hogy az is lesz a leggyorsabb, mert akadhatnak túlterhelt tükörszerverek is, így olyat kell kiválasztani, ami közel van, és gyors rajta az adatátvitel is. Vannak olyan frissítéskezelő alkalmazások, amik mutatják a különböző tükrök adatátviteli sebességeit is. Ilyen például a Linux Mint felülete is.

Strukturáltság

A csomagtár adatbázisoknak köszönhetően a felhasználók a csomagkezelők frontend-jeinek segítségével kulcsszavakra is kereshetnek vagy akár kategóriákból is válogathatnak. A csomagtár adatbázisok a kliens gépen kerülnek felépítésre, így a csomagok keresése, tallózása, csomaginformációk megtekintése gyors, mivel nem jelent további adatforgalmat, hanem a helyben felépített adatbázist használja. Csak ha frissítjük ezt az adatbázist, vagy újabb csomagot töltünk le, akkor kapcsolódik újból.

A csomagtárak struktúráinak még van több keresztmetszete is: például egy disztribúción belül meg szokták különböztetni az ingyenes illetve a licencelt csomagokat, vagy éppen a fő fejlesztéseket különítik el a hibajavításoktól és/vagy a biztonsági frissítésektől, valamint ezeknek a támogatási életciklusa is eltérő lehet, stb. Ezek a további felosztási módszerek disztribúciónként egyediek, amiket az adott disztribúció kiadási információinál tekinthetünk meg.

Kényelem

A csomagtárak kezelésének grafikus felülete asztalkörnyezetenként eltérhet, de a koncepció mindegyiknél hasonló.

Az alábbi képen egy Synaptic csomagkezelő frontend látható, Debian 10 (Buster) rendszeren és LXQT asztalkörnyezeten:

Synaptic csomagkezelő egy Debian rendszeren és LXQT asztalkörnyezeten

Az ablak alsó állapotsorában mutatja, hogy itt több mint 60 ezer csomag közül válogathatunk.

A következő képen a Discover csomagkezelő fontend látható egy Debian 11 (Bullseye) rendszeren és KDE Plasma asztalkörnyezeten:

Discover csomagkezelő egy Debian 11 (Bullseye) rendszeren KDE Plasma asztalkörnyezetben

 

 

Példák a tükrökre

Lássunk néhány példát a tükrökre, azaz a különböző Linux disztribúciók hivatalos csomagtáraira.

Debian

A Debian tükörszerverek listája, majd a magyar tükör kicsit kibontva:

Ubuntu

Az Ubuntu tükörszerverek listája, majd a magyar tükör kicsit kibontva:

CentOS

A CentOS tükörszerverek listája, majd a magyar tükör kicsit kibontva: