Megjelent az új stabil Flatpak 1.14-es eszközkészlet ág, amely egy önálló csomagok építési rendszerét biztosít, amelyek nem kötődnek konkrét Linux disztribúciókhoz és egy speciális tartályban futnak, amely elszigeteli az alkalmazást a többi rendszertől. A Flatpak-csomagok futtatásának támogatása biztosított az Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux és Ubuntu számára. A Flatpak csomagok a Fedora tárolóban találhatók, és a GNOME alkalmazáskezelő programja is támogatja őket.
A Flatpak 1.14-es ág kulcsfontosságú újdonságai:
- Megvalósult a könyvtár létrehozása a fájlok számára (.local/state) és az erre mutató környezeti változó, az XDG_STATE_HOME beállítása.
- Hozzáadva a 'have-kernel-module-' jellegű feltételes ellenőrzések a kernel modulok jelenlétének meghatározásához (a korábban javasolt 'have-intel-gpu' ellenőrzés univerzális változata, amely helyett most a 'have-kernel-module-i915' kifejezés használható).
- Megvalósítva a 'flatpak document-unexport --doc-id=…' parancsot.
- Megtörtént az Appstream metaadatok exportálásának biztosítása a fő környezet számára.
- Hozzáadásra kerültek a flatpak parancsok automatikus kiegészítő szabályai a Fish parancssorhoz.
- Engedélyezett a hálózati hozzáférés az X11 és PulseAudio szolgáltatásokhoz (a megfelelő beállítások hozzáadása esetén).
- A Git-tároló fő ága átnevezésre került 'master'-ről 'main'-re, mivel a 'master' kifejezés az utóbbi időben politikailag nem korrektnek számít.
- Biztosított a bejelentkező szkriptek felülírása az alkalmazás átnevezése esetén.
- Az install parancshoz hozzáadva a '--include-sdk' és '--include-debug' opciók az SDK és debuginfo fájlok telepítéséhez.
- A flatpakref és flatpakrepo fájlokba támogatás került bevezetésre a 'DeploySideloadCollectionID' paraméterhez, amelynek beállításakor a gyűjtemény azonosítója az távoli tároló hozzáadásakor, nem pedig a metaadatok letöltése után lesz beállítva.
- Engedélyezett a beágyazott sandbox-környezetek létrehozása a kezelők számára az MPRIS (Media Player Remote Interfacing Specification) külön neveivel rendelkező munkamenetekben.
- A parancssori eszközökben biztosítva a régi runtime-kiterjesztések felhasználásának információinak megjelenítése.
- Az uninstall parancsban kérés jelenik meg a runtime vagy a még használt runtime-kiterjesztések törlése előtt.
- Az olyan parancsokhoz, mint a 'flatpak run', hozzáadva a '--socket=gpg-agent' opció támogatása.
- A libostree hibáság javítva lett, amely lehetővé tette volna a felhasználók számára, hogy tetszőleges fájlokat töröljenek a rendszeren keresztül a flatpak-system-helper kezelő manipulálásával (törlési kérelem küldésével, különleges név formájában). A probléma csak az 2018 előtt kiadott régi Flatpak és libostree verziókban merül fel (< 0.10.2), és nem érinti a legújabb kiadásokat.
Emlékeztetünk, hogy a Flatpak alkalmazásfejlesztők számára lehetőséget biztosít arra, hogy egyszerűsítsék programjaik terjesztését, amely nem szerepel a disztribúciók alapértelmezett repóiban, egy univerzális konténer elkészítésével, anélkül, hogy különböző buildokat kellene létrehozniuk minden egyes disztribúcióhoz. A biztonságra ügyelő felhasználóknak a Flatpak lehetőséget ad arra, hogy gyanús programokat konténerben futtassanak, biztosítva hozzáférést csupán a hálózati funkciókhoz és a programhoz kapcsolódó felhasználói fájlokhoz. Az újdonságokra kíváncsi felhasználóknak a Flatpak lehetőséget kínál arra, hogy a legfrissebb teszt- és stabil alkalmazásverziókat telepítsék anélkül, hogy változtatniuk kellene a rendszeren. Például a Flatpak csomagok elkészültek a LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio és még sok más számára.
A csomag méretének csökkentése érdekében csak az alkalmazás specifikus függőségeit tartalmazza, míg az alapvető rendszer- és grafikus könyvtárakat (GTK, Qt, GNOME és KDE könyvtárak stb.) csatlakoztatható, szabványos runtime-környezetekként alakítja meg. A Flatpak kulcsfontosságú különbsége a Snap-től az, hogy a Snap az alap rendszer környezeti komponenseit használja és a rendszerhívások szűrésén alapuló izolációt alkalmaz, míg a Flatpak egy a rendszertől független konténert hoz létre, és nagyméretű runtime-csoportokat kezel, amelyek függőségekként nem csomagokat, hanem szabványos rendszerkörnyezeteket biztosítanak (például az összes szükséges könyvtárat a GNOME vagy KDE programok futtatásához).
A tipikus rendszerkörnyezet (runtime), amelyet egy speciális tárolón keresztül telepítenek, további függőségekkel (bundle) egészül ki, amelyekre az alkalmazás működéséhez szükség van. A runtime és a bundle együtt alkotják a konténer tartalmát, ahol a runtime külön települ, és egyszerre több konténerhez is kapcsolódik, így elkerülhető a közös rendszerfájlok duplikációja a konténerek között. Egyetlen rendszerben több különböző runtime (GNOME, KDE) vagy egy és ugyanazon runtime több verziója (GNOME 3.40, GNOME 3.42) is telepíthető. Az alkalmazás konténere, mint függőség, csak egy adott runtime-hoz kötődik, anélkül hogy figyelembe venne külön csomagokat, amelyek a runtime-ot alkotják. Minden hiányzó elem közvetlenül az alkalmazással együtt van becsomagolva. A konténer létrehozásakor a runtime tartalma a /usr partícióként van felszerelve, míg a bundle a /app könyvtárhoz van csatolva.
A runtime és az alkalmazások konténereinek tartalma az OSTree technológia segítségével készül, amelynél a kép atomikusan frissül egy Git-szerű tárolóból, lehetővé téve a verziókontroll módszereinek alkalmazását a disztribúció komponenseinél (például gyorsan visszaállítható a rendszer egy korábbi állapotra). Az RPM csomagok egy speciális rétegen, az rpm-ostree-en keresztül kerülnek a OSTree tárolóba. A csomagok külön telepítése és frissítése a munkakörnyezeten belül nem támogatott, a rendszer nem az egyes komponensek szintjén frissül, hanem teljesen, atomikusan változtatva meg az állapotát. Eszközök állnak rendelkezésre a frissítések inkrementális alkalmazásához, amely megszünteti a teljes kép cseréjének szükségességét minden frissítéskor.
Az kialakított izolált környezet teljesen független a használt disztribúciótól, és megfelelő csomagbeállítások mellett nem fér hozzá a felhasználó vagy az alap rendszer fájljaihoz és folyamataihoz, nem tud közvetlenül hozzáférni a hardverhez, kivéve a DRI-n keresztüli kimenetet, illetve a hálózati alrendszer hívásait. A grafikus kimenet és a bemeneti események kezelése a Wayland protokoll vagy az X11 socket átirányítása révén valósul meg. A külső környezettel való interakció a DBus üzenetküldő rendszere és a speciális API Portals alapján valósul meg.
Az elszigeteléshez Bubblewrap réteg és a Linux hagyományos konténervirtualizációs technológiái szolgálnak, amelyek cgroups, névtér (namespace), Seccomp és SELinux használatán alapulnak. A hangkimenethez PulseAudio használatos. Az izolációt azonban ki lehet kapcsolni, amivel sok népszerű csomag fejlesztői élnek, hogy teljes hozzáférést kapjanak a fájlrendszerhez és az összes eszközhöz a rendszerben. Például a GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity és VLC csomagok korlátozott izolációs módban érkeznek, amely teljes hozzáférést biztosít a felhasználó saját könyvtárához. Ha a csomagok a felhasználói könyvtárhoz való hozzáféréssel kompromittálódnak, akkor a támadónak elég csak megváltoztatni a ~ / .bashrc fájlt ahhoz, hogy a kódját végrehajtsa, annak ellenére, hogy a csomag leírásában szerepel a "sandboxed" címke. A csomagok módosításainak ellenőrzése és a csomaggyártók iránti bizalom külön kérdés, akik gyakran nem állnak kapcsolatban a fő projekttel vagy disztribúciókkal.
Forrás: opennet.ru
