Efter ett och ett halvt Ärs utveckling har den nya stabila grenen av verktyget Flatpak 1.18 publicerats, vilket erbjuder ett system för att bygga sjÀlvgÄende paket, oberoende av specifika Linux-distributioner och körs i en speciell container som isolerar programmet frÄn resten av systemet. Stöd för att köra Flatpak-paket finns för Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux och Ubuntu. Flatpak-paket ingÄr i Fedora-repositoriet och stöds av de inbyggda programhanterarna GNOME och KDE.
Nyckelnyheter i Flatpak 1.18-grenen:
- Stöd för villkorlig behörighet (conditional permission) har införts, vilket gör det möjligt att vid begĂ€ran om behörigheter kontrollera förekomsten av specifika möjligheter i systemet eller i runtime. Till exempel, för att begĂ€ra Ă„tkomst till en inmatningsenhet istĂ€llet för «âdevice=all» kan man begĂ€ra behörigheten «âdevice-if=all:!has-input-device âdevice=input», vilket ger Ă„tkomst endast till inmatningsenheter eller Ă„tergĂ„r till att ge Ă„tkomst till alla enheter om selektiv behörighet inte stöds i runtime. PĂ„ samma sĂ€tt kan Ă„tkomst till USB-enheter begĂ€ras («has-usb-device» och «has-usb-portal») eller delade underhĂ„llssystem.
- Ă
tkomst till enheten /dev/ntsync för att interagera med
NTSYNC-kÀrnmodulen, som implementerar en uppsÀttning primitiva för synkronisering som anvÀnds i Windows NT-kÀrnan och som vÀsentligt kan förbÀttra prestanda för Windows-spel som körs med Wine. - För Intel Xe GPU:n har stöd för API VA-API för hÄrdvaruacceleration av videodekodning införts.
- Möjlighet att fÄ Ätkomst till enheten /dev/kfd (Kernel Fusion Driver) med hjÀlp av de behörigheter som ges för DRI-enheter har införts. KFD-drivrutinen implementerar ett grÀnssnitt för att utföra berÀkningar direkt pÄ AMD GPU:er frÄn applikationer som anvÀnder AMD ROCm, HIP och OpenCL.
- Stöd för anvÀndning av kommandoradsalternativ för att vidarebefordra Ätkomst till kataloger i isolerade applikationer har lagts till.
- Stöd för katalogen «preinstall.d», som definierar listan över förinstallerade Flatpak-applikationer (för att inkludera Flatpak-applikationer i operativsystemet), har lagts till.
- Direkt installation av applikationer frÄn OCI-containeravbilder, som kan laddas ner frÄn egna OCI-repositorier och lokala arkiv, har godkÀnts.
- Stöd för URI «flatpak+https://» har lagts till i kommandot «flatpak install âfrom».
- Kommandon "flatpak run" har fĂ„tt alternativet "âclear-env" för att rensa miljövariabler innan applikationen körs.
- Möjligheten att exportera rotkatalogen för vÀrdmiljön till den isolerade applikationsmiljön med Ätkomst via katalogen /run/host/root har tillhandahÄllits.
- Möjligheten att visa resultatet av kommandons körning i JSON-format har lagts till.
- Isoleringen av byggmiljön har förstĂ€rkts â kommandot "flatpak build" ger numera inte Ă„tkomst till vĂ€rden som standard.
- Kommandot "reinstall" för att installera om beroenden (bundle) har lagts till.
- StandardinstÀllningar för D-Bus har flyttats frÄn katalogen /etc till /usr.
- Starttiden har minskats vid anvÀndning av kommandotolk fish.
- En funktion har lagts till i libflatpak för att fÄ information om tidsstÀmpeln för konfigurationens skapelse, vilket gör att applikationer som GNOME Software kan avgöra om deras cacheade data behöver uppdateras.
- Byggalternativet http_backend har tagits bort, istÀllet för libsoup2 anvÀnds biblioteket libcurl för HTTP/HTTPS-nedladdningar.
- AnvÀndningen av escape-sekvenser för att indikera framsteg i operationen Àr aktiverad som standard.
- Det har blivit tillÄtet att överföra ÄtkomstrÀttigheter till enheter till underliggande sandbox-miljöer skapade genom Flatpak-portaler.
- För applikationer som levereras i form av OCI-bilder har en mekanism implementerats för "extra-data", till exempel för att möjliggöra uppspelning av video h.265 i Flatpak-paket pÄ Fedora Linux.
- Stödet för komprimering av beroenden (OCI bundle) med hjÀlp av algoritmen zstd, som komprimerar data mer effektivt, har lagts till. Gzip fortsÀtter att anvÀndas för komprimering som standard för maximal kompatibilitet.
Flatpak förenklar distributionen av program som inte ingÄr i de officiella repositoryn för distributioner, genom att förbereda en universell container som befriar utvecklarna frÄn att behöva skapa separata versioner för varje distribution. För anvÀndare som Àr bekymrade över sÀkerhet ger Flatpak möjligheten att köra osÀkra applikationer i en container, vilket ger begrÀnsad Ätkomst till endast nödvÀndiga nÀtverksfunktioner och anvÀndarfiler. För anvÀndare som Àr intresserade av nyheter, gör Flatpak det möjligt att 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, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, osv.
För att minska storleken inkluderas endast applikationsspecifika beroenden i paketet. GrundlÀggande system- och grafikbibliotek (GTK, Qt, GNOME- och KDE-bibliotek osv.) levereras som kopplingsbara typiska runtime-miljöer. En nyckelskillnad mellan Flatpak och Snap Àr att Snap anvÀnder komponenter frÄn det primÀra systemets miljö och isolering baserad pÄ filtrering av systemanrop, medan Flatpak skapar en separat container frÄn systemet och opererar med stora runtime-paket, dÀr beroenden inte Àr paket utan typiska systemmiljöer (t.ex. alla bibliotek som behövs för att köra GNOME- eller KDE-program).
Utöver den typiska systemmiljön (runtime) som installeras via ett sÀrskilt förrÄd, levereras ytterligare beroenden (bundle) som krÀvs för att applikationen ska fungera. Tillsammans bildar "runtime" och "bundle" innehÄllet i containern, dÀr "runtime" installeras separat och kopplas till flera containrar, vilket gör att duplicering av gemensamma systemfiler för containrar kan undvikas.
I ett system kan flera olika "runtime" (GNOME, KDE) eller flera versioner av en och samma "runtime" (GNOME 50, GNOME 49) installeras. Containern med applikationen som beroende anvÀnder bara den specifika "runtime" utan att ta hÀnsyn till enskilda paket som bildar den valda "runtime". Alla saknade element packas ihop med applikationen. Vid skapande av containern monteras innehÄllet i "runtime" som en partition /usr, medan "bundle" monteras i katalogen /app.
InnehÄllet i "runtime" och applikationscontainrar bildas med hjÀlp av teknologin OSTree, dÀr bilden atomÀrt uppdateras frÄn ett Git-liknande förrÄd, vilket gör det möjligt att tillÀmpa versionskontrollmetoder pÄ distributionskomponenterna (t.ex. kan man snabbt ÄtergÄ systemet till ett tidigare tillstÄnd). RPM-paket översÀtts till OSTree-förrÄdet med hjÀlp av lagret rpm-ostree.
Urvalsom installation och uppdatering av paket inom arbetsmiljön stöds inte â systemet uppdateras inte pĂ„ nivĂ„n för individuella komponenter, utan helt och hĂ„llet, atomĂ€rt Ă€ndrar sitt tillstĂ„nd. Verktyg för inkrementell tillĂ€mpning av uppdateringar tillhandahĂ„lls, vilket undanröjer behovet av en fullstĂ€ndig ersĂ€ttning av bilden vid varje uppdatering.
Det isolerade miljö som skapas Àr oberoende av den anvÀnda distributionen och har, med korrekt paketering, ingen Ätkomst till anvÀndarens eller systemets filer och processer, samt kan inte direkt nÄ hÄrdvaran, förutom utdata via DRI. Grafikoutput och inmatning organiseras med hjÀlp av Wayland-protokollet eller via X11-sockets. Interaktion med den externa miljön sker via meddelandesystemet DBus och ett sÀrskilt API Portals.
För isolering anvÀnds ett lager av Bubblewrap och traditionella Linux-teknologier för containervirtualisering baserade pÄ anvÀndningen av cgroups, namnrymder (namespaces), Seccomp och SELinux. Vid skapande av paket kan isoleringen inaktiveras, vilket utnyttjas av utvecklare av vissa paket för att fÄ full Ätkomst till filsystemet och alla enheter i systemet.
KĂ€lla: opennet.ru
