En ny stabil version av Flatpak-verktygssatsen 1.14 har publicerats, som tillhandahÄller ett system för att bygga fristÄende paket som inte Àr bundna till specifika Linux-distributioner och som körs i en speciell behÄllare som isolerar applikationen frÄn resten av systemet. Stöd för körning av Flatpak-paket har sÀkerstÀllts för Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux och Ubuntu. Flatpak-paket Àr inkluderade i Fedora-repositoriet och stöds i det inbyggda applikationshanteringsprogrammet GNOME.
Nyckelnyheter i Flatpak 1.14-serien:
- Skapande av katalog för filer i tillstÄnd (.local/state) och faststÀllande av en miljövariabel för att peka pÄ denna katalog, XDG_STATE_HOME, har sÀkerstÀllts.
- Villkorliga kontroller av typen "have-kernel-module- namn" har lagts till för att bestÀmma nÀrvaron av kÀrnmoduler (en universell motsvarighet till den tidigare föreslagna kontrollen have-intel-gpu, dÀr det nu istÀllet gÄr att anvÀnda uttrycket "have-kernel-module-i915").
- Kommandot "flatpak document-unexport âdoc-id=âŠ" har implementerats.
- Export av Appstream-metadata för anvÀndning i huvudmiljön har sÀkerstÀllts.
- Autocompletionsregler för Flatpak-kommandon har lagts till för kommandoraden Fish.
- NÀtverksÄtkomst till X11- och PulseAudio-tjÀnster har tillÄtits (med rÀtt instÀllningar).
- Huvudgrenen i Git-repositoriet har döpts om frÄn "master" till "main", eftersom ordet "master" under senare tid har ansetts politiskt inkorrekt.
- Ăverskrivning av startskript har sĂ€kerstĂ€llts vid omdöpning av applikationen.
- Alternativen "âinclude-sdk" och "âinclude-debug" har lagts till i install-kommandot för installation av SDK och debuginfo-filer.
- Stödet för parametern "DeploySideloadCollectionID" har lagts till i flatpakref och flatpakrepo-filer, vilket gör att samlings-ID:t kommer att stÀllas in vid tillÀgg av det fjÀrran repositoriet, istÀllet för efter att metadata har laddats ner.
- Skapande av inbÀddade sandbox-miljöer för hanterare i sessioner med separata MPRIS-namn (Media Player Remote Interfacing Specification) har tillÄtits.
- Verktygen för kommandoraden har sÀkerstÀllt att information om anvÀndning av förÄldrade runtime-tillÀgg visas.
- I uninstall-kommandot har en bekrÀftelsefrÄga införts innan borttagning av runtime eller runtime-tillÀgg som fortfarande anvÀnds.
- I kommandon som "flatpak run" har stöd för alternativet "âsocket=gpg-agent" lagts till.
- I libostree har en sÄrbarhet ÄtgÀrdats som potentiellt kan tillÄta en anvÀndare att ta bort godtyckliga filer i systemet genom manipulation av flatpak-systemhelper (genom att skicka en begÀran om borttagning med ett sÀrskilt formaterat grennamn). Problemet uppstÄr endast i gamla versioner av Flatpak och libostree, som utfÀrdades före 2018 (< 0.10.2), och pÄverkar inte nuvarande utgÄvor.
Det Àr viktigt att pÄminna om att Flatpak ger utvecklare av applikationer möjlighet att förenkla distributionen av sina program, som inte ingÄr i standardförrÄden för distributioner, genom att förbereda en universell container utan att behöva skapa separata versioner för varje distribution. AnvÀndare som vÀrnar om sÀkerhet kan köra tveksamma applikationer i en container som ger Ätkomst endast till nÀtverksfunktioner och anvÀndarfiler relaterade till applikationen. AnvÀndare som Àr intresserade av nyheter kan installera de senaste test- och stabila versionerna av applikationer utan att behöva göra Àndringar i systemet. Till exempel byggs Flatpak-paket för LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio etc.
För att minska paketets storlek ingÄr endast applikationsspecifika beroenden, medan grundlÀggande system- och grafiska bibliotek (GTK, Qt, GNOME och KDE-bibliotek etc.) presenteras som anslutningsbara standardruntime-miljöer. Huvudskillnaden mellan Flatpak och Snap Àr att Snap anvÀnder komponenter frÄn det underliggande systemet och isolering baserat pÄ filtrering av systemanrop, medan Flatpak skapar en separat container frÄn systemet och opererar med stora runtime-satser, vilket tillhandahÄller standardiserade systemmiljöer (till exempel alla bibliotek som krÀvs för att köra GNOME- eller KDE-program).
Förutom den typiska systemmiljön (runtime) som installeras via ett sÀrskilt lager, levereras ytterligare beroenden (bundle) som krÀvs för att applikationen ska fungera. Tillsammans utgör runtime och bundle innehÄllet i containern, dÀr runtime installeras separat och kan kopplas till flera containrar, vilket förhindrar duplicering av gemensamma systemfiler för containrar. Flera olika runtime (GNOME, KDE) eller flera versioner av samma runtime (GNOME 3.40, GNOME 3.42) kan installeras pÄ ett system. Containern med applikationen som beroende anvÀnder bindningen endast till en specifik runtime, utan att ta hÀnsyn till de enskilda paketen som utgör runtime. Alla saknade element packas tillsammans med applikationen. Vid skapandet av containern monteras innehÄllet i runtime som delen /usr, medan bundle monteras i katalogen /app.
InnehÄllet i runtime och applikationscontainrar skapas med hjÀlp av teknologin OSTree, dÀr bilden atomÀrt uppdateras frÄn ett Git-liknande arkiv, vilket möjliggör tillÀmpning av versionshanteringsmetoder pÄ distributionskomponenter (till exempel kan systemet snabbt ÄterstÀllas till ett tidigare tillstÄnd). RPM-paket översÀtts till OSTree-förvaret med hjÀlp av ett sÀrskilt lager rpm-ostree. Separat installation och uppdatering av paket inom arbetsmiljön stöds inte, systemet uppdateras inte pÄ nivÄn av enskilda komponenter utan helt, och Àndrar atomÀrt sitt tillstÄnd. Verkyg erbjuds för inkrementell tillÀmpning av uppdateringar, vilket eliminerar behovet av att helt byta bild vid varje uppdatering.
Det isolerade miljön som skapas Àr helt oberoende av den anvÀnda distributionen och, vid korrekt paketering, har ingen Ätkomst till anvÀndarens eller huvudsystemets filer och processer, kan inte direkt interagera med hÄrdvaran, förutom utmatning via DRI, och anrop till nÀtverksystemet. Grafikutmatning och hantering av inmatning realiseras med protokollet Wayland eller genom vidarekoppling av X11-socket. Interaktionen med den externa miljön baseras pÄ meddelandebytesystemet DBus och ett sÀrskilt API för Portals.
För isolering anvÀnds ett skikt av Bubblewrap och traditionella Linux-teknologier för containervirtualisering, baserade pÄ anvÀndning av cgroups, namnrymder (namespaces), Seccomp och SELinux. PulseAudio anvÀnds för ljudutmatning. Isoleringen kan dock stÀngas av, vilket utnyttjas av utvecklare av mÄnga populÀra paket för att fÄ full tillgÄng till filsystemet och alla enheter i systemet. Till exempel levereras paket som GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity och VLC med en begrÀnsad isoleringslÀge som lÄter full tillgÄng till hemkatalogen. Vid komprometterade paket med tillgÄng till hemkatalogen, trots en mÀrkning av paketets beskrivning med "sandboxed", rÀcker det för en angripare att Àndra filen ~\/ .bashrc för att köra sin kod. En separat frÄga Àr kontrollen över Àndringar i paketen och förtroendet för paketbyggare, som ofta inte Àr kopplade till huvudprojektet eller distributioner.
KĂ€lla: opennet.ru
