( sz332 | 2024. 09. 01., v – 10:25 )

Java esetén is ezt úgy oldották meg hogy van egy alkalmazásod amihez hozzá van csomagolva az összes könyvtár. Ezek együtt alkotnak egy egységet. Az alkalmazás fejlesztőjének a felelőssége hogy a különböző könyvtárak kompatibilitását biztosítsa és amennyiben security probléma adódik, akkor frissítse az alkalmazását illetve a hozzá tartozó könyvtárakat is - úgy és abban az ütemben ahogy ezt kell.

A "bináris" függőségeket pedig verziózva a maven repository-k tárolják, amik szét vannak mirrorozva, ha pedig azt akarod biztosítani hogy a világvége (illetve a global maven repo-k leállása) esetén is bármelyik időpillanatban tudjál buildelni, arra ott a vannak a repository managerek amiket a saját infrastrukturádba be tudsz telepíteni és ezzel biztosíthatod hogy a csomagok mindig rendelkezésre álljanak (Nexus RepositoryArtifactory, stb.). Nyilván a java bytekód struktúrája miatt nem kell mindenféle platform/os/cputype-ra fordítani, tehát ezt a nyelv sajátossága miatt megspórolod, nem szükséges - legalábbis a külső függőségek számára - a build környezet.

Szerintem a fő kérdés itt a felelősség. Ahogy elkezdődtek a különböző nem operációs rendszer szintű csomagok beszivárogni a disztribúciókba, előjött a kérdés hogy hol a határvonal, kinek mi a felelőssége. 

A magam részéről inkább használom a hivatalos fejlesztőktől származó alkalmazásokat (most pl. Keycloak-kal foglalkozom), mint hogy azzal töltsem az időmet, hogy a disztribúcióban valahogy összerakott csomaggal küzdjek, amely lehet hogy jó lesz, de az is benne van hogy nem teljesen. Ebben szerintem a docker/podman/stb. egy nagyon jó irányt mutat, és én inkább mennék ebbe az irányba (postgresql-t, keycloak-ot, stb. mind így futtatok). Terhelést is levesz a distrokról, úgy is fog minden működni ahogy azt a fejlesztők leírják, lehetőségem is van akár párhuzamosan több különböző verziót használni, nem is szemeteli tele a rendszert.

Én inkább ebbe az irányba mennék.