Bármilyen operációs rendszer stabilitásának, biztonságos működésének az alapja az, hogy a rendszerben használt programcsomag összetevők, programok, szolgáltatások egymással tökéletes harmóniában együttműködjenek. Ehhez nem elegendőek csak a jó minőségű szoftverek.
A Linux alapú rendszereknél úgy épül fel az egész rendszer, hogy az adott szoftverkomponensek, hierarchikus módon egymásra épülnek, tehát függnek a másiktól (szoftver, illetve a csomagfüggőség néven ismerhetjük). Ez a Windows esetében részben van így, és csak az alaprendszerre igaz, egyébként a Windows rendszerekben számos azonos statikus vagy dinamikus komponens (DLL) előfordulhat különböző helyeken, amelyek egy program futtatásához szükségesek. Ezért is van a Windows alapú rendszereknek olyan brutális helyigényük.
A Linux alapú rendszereknél ez kissé másképp van.
A rendszer úgy épül fel, hogy GLIBC-től a futó programig, megosztott programkönyvtárak (LIBRARY) sorának felhasználásával kerül lefordításra (forrásból->bináris) egy alkalmazás. Tehát egy, már konzisztens rendszeren a forrásból fordított alkalmazás (és a megosztott programkönyvtárak megtartása mellett), nem csak konzisztens az alaprendszerrel, de teljes mértékben függ is az alaprendszerben elérhető komponensektől (library-któl /libektől/).
A konzisztenciát a lefordított program összes komponensének tömörítésével és egyetlen „önkicsomagoló” állományba tárolásával tartjuk fenn.
A blackPanther OS esetében az RPM csomagformátumot használjuk és LZMA/XZ használatával tömörítjük a programokat, a tároláshoz. A csomagformátum gyakorlatilag mindegy, hogy RPM vagy DEB, TGZ, ezeknek a fejlesztő szemszögéből van nagy jelentősége, mert a kezelésük, információkészségük, és a méretük meghatározó a rendszer építéskor. Az összes közül az RPM formátum messze fejlettebb és több lehetőséget biztosít mint a többi csomagformátum.
Egy példa, egy egyszerű programcsomag információinak lekérésére
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | csomaginfo gimp blackPanter OS parancssor bázisú csomag és telepítőforrás kezelő szolgáltatás ------------------------------------------------------------------------------- * Name : gimp * Epoch : 2 * Version : 2.10.28 * Release : 2bP * Architecture: x86_64 * Install Date: 2021. nov. 25., csütörtök, 12:59:26 CET * Group : Graphics/Editors and Converters * Size : 106311456 * License : GPLv2+ * Signature : RSA/SHA256, 2021. nov. 25., csütörtök, 08:40:52 CET, Key ID ad7520013d7afd95 * Source RPM : gimp-2.10.28-2bP.src.rpm * Build Date : 2021. nov. 25., csütörtök, 08:36:52 CET * Build Host : core4.blackpanther.hu * Relocations : (not relocatable) * Packager : Charles K Barcza xxx@xxxxx.hu * Vendor : blackPanther Europe * URL : http://www.gimp.org/ * Summary : The GNU Image Manipulation Program * Description : * The GIMP is an image manipulation program suitable for photo retouching, * image composition and image authoring. Many people find it extremely useful * in creating logos and other graphics for web pages. The GIMP has many of the * tools and filters you would expect to find in similar commercial offerings, * and some interesting extras as well. * * The GIMP provides a large image manipulation toolbox, including channel * operations and layers, effects, sub-pixel imaging and anti-aliasing, * and conversions, all with multi-level undo. |
Nem utolsó sorban az eredeti forráscsomagokat is RPM-ben tárolja! Tehát bármikor elővehető, és telepítésük megoldja egyúttal a chroot környezet függőségkezelését is, hogy a forráskód azonnal binárissá fordítható legyen.
A konzisztencia, és ezáltal a rendszer stabilitás fenntartása, a ‘hegesztés’ nélküli használat alapja nem más, mint a tökéletes alkalmazáscsomagok elkészítése. Azoknak a felépítésére és legyártására a blackPanther-projekt egy teljesen egyedi, külön policy-t dolgozott ki.
A csomagalapú konzisztencia fenntartása nagyon összetett feladat, mert egy adott program nem csak rendszer-összetevőkre, hanem más programcsomagokra, azok pedig újabbakra, hivatkoznak. Egy program felépítése nem csak abból áll, hogy vagy telepítjük a GIMP-et (példa) – vagy nem -, hanem, a telepítéssel exponenciális folyamatokat indítunk el, és ezen folyamatok együttműködésének a végeredménye, ha telepíthető lesz az adott szoftver.
Figyelem, türelem, precizitás
A programcsomag készítés folyamatának a bonyolultságát, és a fejlesztéshez szükséges precizitást az alábbi képi példában is szereplő, és mindenki által ismert GIMP alkalmazással prezentálom! Kattints a képre, tovább nagyítható 4K-s kép.
Tudtad?! A blackPanther OS verziókban ~25.000 konzisztens programcsomag van! Ezt a konzisztenciát kb, 70.000 csomag legyártásával érhetjük el…
A csomagkészítés egy összetett és nagy figyelmet igénylő feladat!
A megosztott programkönyvtárak miatt csak olyan rendszerrel lehet kompatibilis egy megosztott programkönyvtárakra épülő programcsomag, amely azonos verziójú programkönyvtárakat használ, és azok a rendszerben vagy a tárolóban elérhetőek. Egyébként érvénytelen függőségi vagy fájlkonfliktus alakul ki. Ezek a csomagok csak kényszerítéssel telepíthetőek, de az ilyen művelt a teljes rendszer összeomlását is okozhatja!
Hibás, idegen, inkonzisztens programcsomagok
Egy idegen rendszer programcsomagja, inkonzisztens a rendszerrel, és érvénytelen függőségi hibák sorozatát produkálja
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # fedora forrásból származó gimp programcsomag (NE UTÁNOZD!) telepites gimp-2.10.28-1.fc36.x86_64.rpm # érvénytelen aláírást is tartalmaz warning: gimp-2.10.28-1.fc36.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 38ab71f4: NOKEY # nem létező érvénylelen komponensfüggőségek alakulnak ki error: Failed dependencies: babl(x86-64) >= 0.1.78 is needed by gimp-2:2.10.28-1.fc36.x86_64 freetype >= 2.1.7 is needed by gimp-2:2.10.28-1.fc36.x86_64 gegl04(x86-64) >= 0.4.30 is needed by gimp-2:2.10.28-1.fc36.x86_64 gimp-libs(x86-64) = 2:2.10.28-1.fc36 is needed by gimp-2:2.10.28-1.fc36.x86_64 libIex-3_1.so.30()(64bit) is needed by gimp-2:2.10.28-1.fc36.x86_64 libOpenEXR-3_1.so.30()(64bit) is needed by gimp-2:2.10.28-1.fc36.x86_64 libc.so.6(GLIBC_2.32)(64bit) is needed by gimp-2:2.10.28-1.fc36.x86_64 libc.so.6(GLIBC_2.33)(64bit) is needed by gimp-2:2.10.28-1.fc36.x86_64 libc.so.6(GLIBC_2.34)(64bit) is needed by gimp-2:2.10.28-1.fc36.x86_64 libjson-glib-1.0.so.0(libjson-glib-1.0.so.0)(64bit) is needed by gimp-2:2.10.28-1.fc36.x86_64 libunwind(x86-64) >= 1.1.0 is needed by gimp-2:2.10.28-1.fc36.x86_64 |
Az ilyen programokat fejlesztői háttérismeretek nélkül semmiképp se telepítsük.
Egy szabályosan feltelepíthető programcsomag ilyen „választ” ad!
Ezt telepíthetjük
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | telepites gimp * blackPanter OS parancssor bázisú csomag és telepítőforrás kezelő szolgáltatás... * Internet kapcsolat: [OK] * Adatbázis állapota: [OK] * Gyökérfájlrendszer használata: [16%] * A következő csomag[ok] telepítése van folyamatban: * A függőségek feloldásához a következő csomagok telepítésre kerülnek: Csomag Verzió Kiadás Architektúra ("Media3" adatforrás) gutenprint-common 5.2.14 1bP x86_64 (ajánlott) gutenprint-gimp2 5.2.14 1bP x86_64 (ajánlott) transfig 3.2.7a 1bP x86_64 (ajánlott) ("Media4" adatforrás) gocr 0.52 1bP x86_64 (ajánlott) lib64cdt5 2.40.1 2bP x86_64 lib64cgraph6 2.40.1 2bP x86_64 lib64netpbm11 10.73.18 1bP x86_64 (ajánlott) lib64pathplan4 2.40.1 2bP x86_64 xsane 0.999 4bP x86_64 (ajánlott) xsane-gimp 0.999 4bP x86_64 (ajánlott) ("Media5" adatforrás) graphviz 2.40.1 2bP x86_64 ("Media6" adatforrás) netpbm 10.73.18 1bP x86_64 (ajánlott) ("Media7" adatforrás) lib64gutenprint2 5.2.14 1bP x86_64 (ajánlott) lib64gutenprintui2_1 5.2.14 1bP x86_64 (ajánlott) lib64gvc6 2.40.1 2bP x86_64 lib64gvpr2 2.40.1 2bP x86_64 lib64lab_gamut1 2.40.1 2bP x86_64 ("Update" adatforrás) gimp 2.10.28 2bP x86_64 lib64babl0.1_0 0.1.88 1bP x86_64 lib64gegl0.4_0 0.4.32 1bP x86_64 lib64gimp2.0_0 2.10.28 2bP x86_64 lib64ilmbase2_5_25 2.5.5 1bP x86_64 lib64ilmimf2_5_25 2.5.5 1bP x86_64 [..] További 265MB lemezterület lesz használva. 57MB csomag lesz beszerezve. Kívánja folytatni a fenti 34 csomag telepítését? (I/n) |
Hivatalos, hitelesített csomagok
A kész, tehát biztonságosnak és konzisztensnek jelölt csomagokat digitális aláírással látjuk el, és a saját hitelesítőkulcsunkkal írjuk alá. Amennyien egy programcsomag nincs hitelesített kulccsal ellátva, akkor a telepítőprogram értesítést küld a felhasználónak, hogy különös figyelemmel kell kezelnie az adott programot, mert azt a blackPanther Projektnél nem ellenőrizték, és nem kapott digitális aláírást. Az ilyen programok a harmadik féltől származó: RPM, AppImage, Flatpak, Snap csomagok, illetve a tömörített archívumokban, vagy bin állományokból futtatható bináris programok.
És ennél a telepítési részletnél három lényeges dologra hívnám fel a laikusok figyelmét! Összevetve a Debian vonallal:
- Az RPM csomag, és csomagkezelő motor által felkínált csomaglista áttekinthetősége (feljebb), és a lejjebb látható képen az Ubuntu (Debian, LinuxMint káosz) telepítő által kínált információk közti különbségeket
- A blackPanther OS-re majd miden esetben jellemző egyediséget is tükröző csomagméretbeli (265MB) különbségeket az alább látható Ubuntu telepítés méretével szemben (109MB).
- Az összmennyiség tömörítési arányára! Ez rendszer szinten óriási méret különbség amiben a Debian alapú rendszerek messze lemaradnak.
Ebből is láthatod, hogy a blackPanther OS alapprogramjai mennyivel több szolgáltatást, kényelmet és lehetőséget biztosítanak számodra.
A megosztott (shared library) felépítés hátránya, hogy egy olyan kompones cseréje amely fontos összetevőket biztosít, a teljes rendszer működésére kihathat. Ezért sok esetben nem lehet „bűntelenül csak úgy” kiemelni egyetlen library-t vagy akár háttérprogramot sem. Persze van minimális tolerancia a programok tekintetében, de hozzáértés nélkül rendszer-állományokat piszkálni, rendszer-összeomláshoz vezet.
Firefox: forrásból -> binárist tartalmazó, telepíthető RPM csomaggá
Egy óra egy percben!
Hegyjegyzés: Ez a tudásanyag nem parancsokról, parancs nevekről, főleg nem ‘alias’-ról szól, hanem arról, hogy a rendszerbe hogyan illeszkednek a programok, hogy áll össze egy disztribúció, és hogy tartható kézben a rendszered! Ha ezt nem tudod értelmezni, számodra az alábbi oldalt tudom javasolni: Alapok
Hozzászólások lezárva