Pas një dhe gjysmë vitesh zhvillimi, është publikuar dega e re stabile e mjetit Flatpak 1.18, e cila ofron një sistem për ndërtimin e pakove të pavarura, të pa lidhura me distro të caktuara Linux, dhe që ekzekutohen në një kontejner të veçantë, i cili izolon aplikacionin nga pjesa tjetër e sistemit. Mbështetja për ekzekutimin e pakove Flatpak është siguruar për Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux dhe Ubuntu. Paketat Flatpak janë përfshirë në depozitimin e Fedora dhe mbështeten nga programet menaxhuese të aplikacioneve GNOME dhe KDE.
Kryesoret në degën Flatpak 1.18:
- ĂshtĂ« implementuar mbĂ«shtetje pĂ«r lejet kushtimore (conditional permission), tĂ« cilat lejojnĂ« verifikimin e disa funksionaliteteve nĂ« sistem ose nĂ« runtime gjatĂ« kĂ«rkimit tĂ« lejeve. PĂ«r shembull, nĂ«se nevojitet qasje nĂ« pajisjen e hyrjes, nĂ« vend tĂ« «âdevice=all» mund tĂ« kĂ«rkohet leja «âdevice-if=all:!has-input-device âdevice=input», e cila do tĂ« ofrojĂ« qasje vetĂ«m pĂ«r pajisjet e hyrjes ose do tĂ« kthehet nĂ« qasje pĂ«r tĂ« gjitha pajisjet nĂ«se ofrimi i selektuar i qasjes nuk mbĂ«shtetet nĂ« runtime. NĂ« tĂ« njĂ«jtĂ«n mĂ«nyrĂ«, mund tĂ« kĂ«rkohet qasje nĂ« pajisjet USB («has-usb-device» dhe «has-usb-portal») ose nĂ« nĂ«n-sistemet e ndara.
- ĂshtĂ« lejuar qasja nĂ« pajisjen /dev/ntsync pĂ«r tĂ« komunikuar me
modulin e bërthamës NTSYNC, i cili implementon një set primitivash për sinkronizimin e përdorur në bërthamën Windows NT dhe që lejon rritjen e ndjeshme të performancës së lojrave Windows, të cilat ekzekutohen përmes Wine. - Për GPU-në Intel Xe është aktivizuar mbështetja për API-në VA-API për përshpejtimin harduerik të dekodimit të videos.
- ĂshtĂ« realizuar mundĂ«sia e aksesit nĂ« pajisjen /dev/kfd (Kernel Fusion Driver) duke pĂ«rdorur autorizimet e ofruara pĂ«r pajisjet DRI. Shoferi kfd implementon njĂ« ndĂ«rfaqe pĂ«r ekzekutimin e drejtpĂ«rdrejtĂ« tĂ« llogaritjeve nĂ« GPU-tĂ« AMD nga aplikacionet qĂ« pĂ«rdorin AMD ROCm, HIP dhe OpenCL.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rdorimin e opsioneve tĂ« komandĂ«s nĂ« rresht pĂ«r tĂ« lejuar aksesin nĂ« katalogĂ«t e aplikacioneve tĂ« izoluara.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r katalogun 'preinstall.d', i cili pĂ«rcakton listĂ«n e aplikacioneve Flatpak tĂ« para-instaluara (pĂ«r tĂ« pĂ«rfshirĂ« aplikacione Flatpak nĂ« sistemin operativ).
- ĂshtĂ« lejuar instalimi i drejtpĂ«rdrejtĂ« tĂ« aplikacioneve nga imazhe kontejnerĂ«sh nĂ« formatin OCI, tĂ« cilat mund tĂ« ngarkohen nga repository tĂ« veta OCI dhe arkiva lokale.
- NĂ« komandĂ«n 'flatpak install âfrom' Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r URI 'flatpak+https://'.
- NĂ« komandĂ«n 'flatpak run' Ă«shtĂ« shtuar opsioni 'âclear-env' pĂ«r pastrimin e variablave tĂ« ambientit pĂ«rpara se tĂ« filloj aplikacionin.
- ĂshtĂ« ofruar mundĂ«sia pĂ«r eksportimin e katalogut rrĂ«njor tĂ« mjedisit tĂ« hostit nĂ« ambientin e aplikacionit tĂ« izoluar me qasje pĂ«rmes katalogut /run/host/root.
- ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« nxjerrĂ« rezultatin e ekzekutimit tĂ« komandave nĂ« formatin JSON.
- Izolimi i forcuar i ambientit tĂ« ndĂ«rtimit â komandĂ«s «flatpak build» tani nuk i jep akses default nĂ« host.
- Shtuar komandën «reinstall» për rinstalimin e varësive (bundle).
- Cilësimet e D-Bus janë transferuar nga katalozi /etc në /usr si parazgjedhje.
- Koha e nisjes është shkurtuar kur përdoret interpretuese e komandave fish.
- Në libflatpak është shtuar një funksion për të marrë informacione rreth kohës së krijimit të konfigurimit, që i lejon aplikacioneve si GNOME Software të përcaktojnë se të dhënat e ruajtura duhet të përditësohen.
- Këtu u hoq opsioni i ndërtimit http_backend, e zëvendësuar me bibliotekën libcurl për ngarkimin përmes HTTP/HTTPS në vend të libsoup2.
- Përdorimi i sekuencave të arratisjes për të treguar përparimin e ekzekutimit të operacionit është aktivizuar si parazgjedhje.
- ĂshtĂ« lejuar kalimi i tĂ« drejtave tĂ« aksesit nĂ« pajisje nĂ« ambientet sandbox tĂ« brendshme, tĂ« krijuara pĂ«rmes portaleve Flatpak.
- Për aplikacionet që vijnë në formën e imazheve OCI, është implementuar mekanizmi «extra-data», për shembull, për të mundësuar luajtjen e videove h.265 në paketat Flatpak të Fedora Linux.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r kompresimin e varĂ«sive (OCI bundle) duke pĂ«rdorur algoritmin zstd, qĂ« comprimon tĂ« dhĂ«nat mĂ« efikasht. NĂ« mĂ«nyrĂ« default pĂ«r kompresim vazhdon tĂ« pĂ«rdoret gzip, qĂ« siguron maksimumin e kompatibilitetit.
Flatpak e thjeshton shpërndarjen e programeve që nuk janë në depozitë të sistemit operativ, duke përgatitur një konteiner universal, që i shpëton zhvilluesit nga nevoja për të krijuar ndarje të veçanta për çdo shpërndarje. Përdoruesve që i intereson siguria, Flatpak u jep mundësinë të ekzekutojnë aplikacione problematike në një konteiner, duke ofruar akses selektiv vetëm në funksionet rrjet dhe skedarët e nevojshëm të përdoruesit. Përdoruesve që janë të interesuar në risitë, Flatpak u mundëson të instalojnë versionet më të reja testuese dhe të stabilizuara të aplikacioneve pa nevojën për të bërë ndryshime në sistem. Për shembull, paketat Flatpak ndërtohen për LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, etj.
Për të zvogëluar madhësinë, në paketë përfshihen vetëm varësitë specifike për aplikacionin. Bibliotekat bazë sistemore dhe grafike (GTK, Qt, bibliotekat GNOME dhe KDE, etj.) ofrohen në formën e runtime-ambienteve tipike të lidhura. Dallimi kryesor midis Flatpak dhe Snap është se Snap përdor komponentët e ambientit të sistemit kryesor dhe izolimin të bazuar në filtrimin e thirrjeve të sistemit, ndërsa Flatpak krijon një kontejner të veçantë nga sistemi dhe operon me grupe të mëdha runtime, duke ofruar si varësi, jo paketa, por ambiente sistemore tipike (p.sh., të gjitha bibliotekat e nevojshme për funksionimin e programeve GNOME ose KDE).
Përveç ambientit standart sistemor (runtime), i cili instalohet përmes një depoje të veçantë, ofrohen varësi shtesë (bundle), të nevojshme për funksionimin e aplikacionit. Në përmbledhje, "runtime" dhe "bundle" formojnë mbushjen e kontejnerit, duke qenë se "runtime" instalohet veçmas dhe lidhet menjëherë me disa kontejnerë, duke lejuar kështu shmangien e dyfishimit të skedarëve sistemorë të përgjithshëm për kontejnerët.
Në një sistem mund të instalohen disa "runtime" të ndryshme (GNOME, KDE) ose disa versionet e një "runtime" (GNOME 50, GNOME 49). Konteineri me aplikacionin si varësi përdor vetëm një lidhje për "runtime" të caktuar, pa marrë parasysh paketat e veçanta që formojnë "runtime" e përzgjedhur. Të gjitha elementet e munguar paketohen direkt së bashku me aplikacionin. Kur krijohet konteineri, përmbajtja e "runtime" montohet si një ndarje "/usr", ndërsa "bundle" montohet në katalogun "/app".
Përmbajtja e "runtime" dhe konteinerëve të aplikacioneve formohet duke përdorur teknologjinë OSTree, e cila lejon që imazhi të përditësohet në mënyrë atomike nga një depo si Git, duke lejuar që metodat e kontrollit të versionit të aplikohen mbi komponentët e distribucionit (për shembull, është e mundur të rikthehet sistemi shpejt në një gjendje të kaluar). RPM-paketat transliterohen në depozitat OSTree përmes një shtrese rpm-ostree.
Instalimi dhe pĂ«rditĂ«simi selektiv i pakove brenda mjedisit tĂ« punĂ«s nuk mbĂ«shtetet â sistemi pĂ«rditĂ«sohet si njĂ« e tĂ«rĂ«, duke ndryshuar nĂ« mĂ«nyrĂ« atomike gjendjen e tij. Ofrohen mjete pĂ«r zbatimin inkremental tĂ« pĂ«rditĂ«simeve, duke eliminuar nevojĂ«n pĂ«r njĂ« zĂ«vendĂ«sim tĂ« plotĂ« tĂ« imazhit me çdo pĂ«rditĂ«sim.
Mjedisi i izoluar i krijuar nuk varet nga distribucioni që përdoret dhe me konfigurimet e duhura të paketës nuk ka akses në skedarët dhe proceset e përdoruesit ose të sistemit kryesor, as nuk mund të lidhet direkt me pajisjen, përveç daljeve përmes DRI. Dalja e grafikës dhe organizimi i hyrjes realizohen përmes protokollit Wayland ose përmes kalimit të soketeve X11. Ndërveprimi me mjedisin e jashtëm është i ndërtuar përmes sistemit të shkëmbimit të mesazheve DBus dhe një API të veçantë Portals.
Për izolimin përdoret shtresa Bubblewrap dhe teknologjitë tradicionale të virtualizimit të kontejnerëve të Linux, të bazuara në përdorimin e cgroups, hapësirave të emrave (namespaces), Seccomp dhe SELinux. Gjatë krijimit të paketës, izolimi mund të ndiqet, të cilën e shfrytëzojnë zhvilluesit e disa paketave për të fituar qasje të plotë në FS dhe të gjitha pajisjet në sistem.
Burimi: opennet.ru
