Release av Flatpak 1.14.0 fristående paketsystem

En ny stabil gren av verktygssatsen Flatpak 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 körs i en speciell behållare som isolerar applikationen från resten av systemet. Stöd för att köra Flatpak-paket tillhandahålls för Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux och Ubuntu. Flatpak-paket ingår i Fedora-förvaret och stöds av den inbyggda GNOME-applikationshanteraren.

Viktiga innovationer i Flatpak 1.14-grenen:

  • Det är möjligt att skapa en katalog för filer i tillstånd (.local/state) och ställa in miljövariabeln XDG_STATE_HOME som pekar på denna katalog.
  • Lade till villkorliga kontroller av formen "have-kernel-module-name" för att bestämma närvaron av kärnmoduler (en universell analog till den tidigare föreslagna have-intel-gpu-kontrollen, istället för vilken uttrycket "have-kernel-module-i915 ” kan nu användas).
  • Kommandot "flatpak document-unexport —doc-id=..." har implementerats.
  • Export av Appstream-metadata för användning i huvudmiljön tillhandahålls.
  • Lade till regler för slutförande av flatpak-kommandon för fiskskalet
  • Nätverksåtkomst till X11- och PulseAudio-tjänster är tillåten (om lämpliga inställningar läggs till).
  • Huvudgrenen i Git-förvaret har bytt namn från "master" till "main", eftersom ordet "master" nyligen har ansetts vara politiskt inkorrekt.
  • Startskript skrivs nu om om programmet byter namn.
  • Lade till alternativen "--include-sdk" och "--include-debug" till installationskommandot för att installera SDK- och debuginfo-filerna.
  • Lade till stöd för parametern "DeploySideloadCollectionID" till filerna flatpakref och flatpakrepo. När det är inställt kommer samlings-ID:t att ställas in när ett fjärrlager läggs till och inte efter att metadata har laddats.
  • Tillåtet skapandet av kapslade sandlådemiljöer för hanterare i sessioner med separata MPRIS-namn (Media Player Remote Interfacing Specification).
  • Kommandoradsverktyg ger nu information om användningen av föråldrade runtime-tillägg.
  • Kommandot uninstall implementerar en bekräftelsebegäran innan runtime- eller runtime-tillägg som fortfarande används tas bort.
  • Lade till stöd för alternativet "--socket=gpg-agent" till kommandon som "flatpak run".
  • En sårbarhet har åtgärdats i libotree som potentiellt kan tillåta en användare att ta bort godtyckliga filer på systemet genom manipulering av flatpak-system-helper-hanteraren (sända en raderingsförfrågan med ett speciellt formaterat filialnamn). Problemet dyker bara upp i äldre versioner av Flatpak och libotree släppta före 2018 (< 0.10.2) och påverkar inte aktuella utgåvor.

Låt oss påminna dig om att Flatpak tillåter applikationsutvecklare att förenkla distributionen av sina program som inte ingår i standarddistributionsförråden genom att förbereda en universell behållare utan att skapa separata sammansättningar för varje distribution. För säkerhetsmedvetna användare låter Flatpak dig köra en tvivelaktig applikation i en behållare, och ger endast åtkomst till nätverksfunktionerna och användarfilerna som är associerade med applikationen. För användare som är intresserade av nya produkter låter Flatpak dig installera de senaste test- och stabila versionerna av applikationer utan att behöva göra ändringar i systemet. Till exempel är Flatpak-paket byggda för LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.

För att minska paketstorleken inkluderar det bara applikationsspecifika beroenden, och de grundläggande system- och grafikbiblioteken (GTK, Qt, GNOME och KDE bibliotek, etc.) är designade som plug-in standard körtidsmiljöer. Den viktigaste skillnaden mellan Flatpak och Snap är att Snap använder komponenterna i huvudsystemmiljön och isolering baserat på filtrering av systemanrop, medan Flatpak skapar en container separat från systemet och arbetar med stora runtime-uppsättningar, och tillhandahåller inte paket som beroenden, utan standard. ens systemmiljöer (till exempel alla bibliotek som behövs för driften av GNOME- eller KDE-program).

Förutom standardsystemmiljön (runtime), installerad genom ett speciellt arkiv, tillhandahålls ytterligare beroenden (paket) som krävs för driften av applikationen. Totalt utgör runtime och bunt fyllningen av behållaren, trots att runtime är installerad separat och knuten till flera behållare samtidigt, vilket gör att du slipper duplicera systemfiler som är gemensamma för behållare. Ett system kan ha flera olika körtider installerade (GNOME, KDE) eller flera versioner av samma körtid (GNOME 3.40, GNOME 3.42). En behållare med en applikation som beroende använder en bindning endast till en specifik körtid, utan att ta hänsyn till de individuella paketen som utgör körtiden. Alla saknade element paketeras direkt med applikationen. När en behållare bildas monteras runtime-innehållet som /usr-partitionen och paketet monteras i /app-katalogen.

Runtime- och applikationsbehållarna är byggda med OSTree-teknologi, där bilden uppdateras atomärt från ett Git-liknande arkiv, vilket tillåter versionskontrollmetoder att tillämpas på distributionskomponenterna (du kan till exempel snabbt rulla tillbaka systemet till en tidigare tillstånd). RPM-paket översätts till OSTree-förvaret med hjälp av ett speciellt rpm-ostree-lager. Separat installation och uppdatering av paket inom arbetsmiljön stöds inte, systemet uppdateras inte på nivån för enskilda komponenter, utan som en helhet, och ändrar dess tillstånd atomärt. Tillhandahåller verktyg för att tillämpa uppdateringar stegvis, vilket eliminerar behovet av att helt ersätta bilden med varje uppdatering.

Den genererade isolerade miljön är helt oberoende av distributionen som används och har, med korrekta paketinställningar, inte tillgång till filer och processer för användaren eller huvudsystemet, och kan inte direkt komma åt utrustningen, med undantag för utdata via DRI och samtal till nätverkets delsystem. Grafikutmatning och inmatningsorganisation implementeras med hjälp av Wayland-protokollet eller via X11-socket-vidarebefordran. Interaktion med den externa miljön är baserad på meddelandesystemet DBus och en speciell Portals API.

För isolering används Bubblewrap-lagret och traditionell Linux-containervirtualiseringsteknik, baserad på användningen av cgroups, namespaces, Seccomp och SELinux. PulseAudio används för att mata ut ljud. I det här fallet kan isolering inaktiveras, vilket används av utvecklarna av många populära paket för att få full tillgång till filsystemet och alla enheter i systemet. Till exempel kommer GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity och VLC med ett begränsat isoleringsläge som ger full åtkomst till hemkatalogen. Om paket med åtkomst till hemkatalogen äventyras, trots närvaron av "sandboxed"-etiketten i paketbeskrivningen, behöver angriparen bara ändra ~/.bashrc-filen för att exekvera sin kod. En separat fråga är kontrollen av ändringar av paket och förtroende för paketbyggare, som ofta inte är associerade med huvudprojektet eller distributionerna.

Källa: opennet.ru

Lägg en kommentar