Na tweeƫnhalf jaar ontwikkeling is de nieuwe stabiele versie van de Flatpak-toolset 1.16 uitgebracht, die een systeem biedt voor het bouwen van zelfstandige pakketten, niet gebonden aan specifieke Linux-distributies en uitgevoerd in een speciale container die de applicatie isoleert van de rest van het systeem. Ondersteuning voor het uitvoeren van Flatpak-pakketten is geboden voor Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux en Ubuntu. Flatpak-pakketten zijn opgenomen in de Fedora-repository en worden ondersteund in de standaard applicatiebeheertools van GNOME en KDE.
Belangrijke vernieuwingen in Flatpak 1.16:
- De overstap naar het gebruik van het build-systeem Meson is gerealiseerd. De ondersteuning voor het bouwen met Autotools is stopgezet. Voor het bouwen van Flatpak is nu Python, minimaal versie 3.5, vereist.
- Gezamenlijke toegang tot de gssproxy-socket is geĆÆmplementeerd, waardoor authenticatie via Kerberos in applicaties die in sandbox-isolatie draaien, mogelijk is.
- Bij het creĆ«ren van de socket voor Wayland is de security-context extensie gebruikt, waardoor de compositor toepassingen kan identificeren en beperken die in sandbox-isolatie draaien. De optie āāsocket=inherit-wayland-socketā is toegevoegd om een bestaande Wayland-socket te erven. server Na de installatie of update van applicaties wordt de configuratie van de D-Bus sessiebus automatisch opnieuw geladen om nieuwe D-Bus-services die door applicaties worden geĆ«xporteerd op te pikken.
- Distributies hebben de mogelijkheid gekregen om repositories met Flatpak-pakketten te definiĆ«ren, gebruikmakend van de map ā/usr/share/flatpak/remotes.dā, naast ā/etc/flatpak/remotes.dā.
- Er is gewerkt aan het splitsen van grote bestanden met de broncode in kleine modules.
- De optie āādevice=inputā is toegevoegd voor toegang tot invoerapparaten via /dev/input.
- Voor de isolatie van applicaties is een nieuwe versie van de bubblewrap-toolset 0.11 ingezet. In distributies die Flatpak bouwen met behulp van het systeemuitvoerbare bestand bwrap, is minimaal versie 0.11 van bubblewrap vereist. De bescherming tegen het creƫren van geneste gebruikersidentiteitsruimtes (user namespace) in sandbox-omgevingen is versterkt.
- De configuratie van aanvullende talen is vereenvoudigd. Er is voorzien in de identificatie van talen op basis van informatie over gebruikers, verstrekt door de DBus-service AccountsService.
- De instellingen voor extra talen zijn vereenvoudigd. Er is een mogelijkheid om talen te definiƫren op basis van gebruikersinformatie die wordt verstrekt door de DBus-service AccountsService.
- Applicaties die gebruikmaken van geneste sandbox-isolatie, zoals die op basis van de WebKit-engine, mogen het AT-SPI-protocol gebruiken om te communiceren met schermlezers. Een optie "flatpak run āa11y-own-name" is toegevoegd om de bus te selecteren waarmee toegang wordt verkregen tot hulpmiddelen voor mensen met een handicap.
- Bij het uitvoeren van het commando "flatpak run -vv " worden alle toepasselijke sandbox-isolatie-instellingen weergegeven.
- De optie "ādevice=usb" is toegevoegd, evenals de parameters "āusb" en "āno-usb" voor het beheren van de toegang van de applicatie tot USB-apparaten.
- Ondersteuning voor het KCompletion-framework is toegevoegd, dat wordt gebruikt voor autocompletion van zoekwoorden in KDE.
- De omgevingsvariabelen "FLATPAK_DATA_DIR" en "FLATPAK_DOWNLOAD_TMPDIR" zijn toegevoegd om de directories voor gegevens ( /usr/share/flatpak) en tijdelijke gedownloade bestanden ( /var/tmp) te overschrijven.
- De uitvoer van escape-sequenties voor het weergeven van de voortgang van operaties in terminalemulators is toegevoegd.
Ter herinnering, Flatpak vergemakkelijkt de verspreiding van software die niet in de reguliere repositories van distributies zit, door één universele container voor te bereiden die ontwikkelaars bevrijdt van de noodzaak om aparte builds voor elke distributie te maken. Gebruikers die om veiligheid geven, kunnen twijfelachtige applicaties in een container uitvoeren, met selectieve toegang alleen tot de benodigde netwerkfuncties en gebruikersbestanden. Voor gebruikers die geïnteresseerd zijn in nieuwigheden, stelt Flatpak hen in staat om de meest recente test- en stabiele versies van applicaties te installeren zonder wijzigingen in het systeem aan te brengen. Bijvoorbeeld, Flatpak-pakketten worden samengesteld voor LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, enz.
Om de grootte te verkleinen, worden alleen applicatiespecifieke afhankelijkheden in het pakket opgenomen. Basis systeem- en grafische bibliotheken (GTK, Qt, bibliotheken van GNOME en KDE, enz.) worden geleverd als in plugbare standaard runtime-omgevingen. Het belangrijkste verschil tussen Flatpak en Snap is dat Snap componenten van de hoofdsysteemomgeving gebruikt en isolatie toepast op basis van filtering van systeemaanroepen, terwijl Flatpak een apart van het systeem container creƫert en werkt met grote runtime-sets, waarbij niet-pakketten worden aangeboden als afhankelijkheden, maar standaard systeemomgevingen (bijvoorbeeld alle bibliotheken die nodig zijn voor het draaien van GNOME- of KDE-programma's).
Naast de standaard systeemomgeving (runtime) die via een speciale repository wordt geĆÆnstalleerd, worden aanvullende afhankelijkheden (bundle) geleverd die nodig zijn voor de werking van de applicatie. Samen vormen 'runtime' en 'bundle' de inhoud van de container, waarbij 'runtime' afzonderlijk wordt geĆÆnstalleerd en aan meerdere containers wordt gekoppeld, zodat duplicatie van gemeenschappelijke systeembestanden voor containers kan worden vermeden.
In één systeem kunnen meerdere verschillende 'runtime' (GNOME, KDE) of meerdere versies van één 'runtime' (GNOME 46, GNOME 47) zijn geïnstalleerd. De container met de applicatie als afhankelijkheid gebruikt alleen binding naar een specifieke 'runtime', zonder afzonderlijke pakketten die de gekozen 'runtime' vormen in overweging te nemen. Alle ontbrekende elementen worden rechtstreeks samen met de applicatie verpakt. Bij het maken van de container wordt de inhoud van de 'runtime' gemonteerd als de partitie /usr, en de 'bundle' wordt gemonteerd in de map /app.
De inhoud van de 'runtime' en applicatiecontainers wordt gevormd met behulp van de technologie OSTree, waarbij de afbeelding atomair wordt bijgewerkt vanuit een Git-achtig opslag, waardoor versiebeheer kan worden toegepast op de componenten van de distributie (bijvoorbeeld, het is mogelijk om snel het systeem naar een eerdere staat terug te zetten). RPM-pakketten worden in de OSTree-repository getransformeerd met behulp van de rpm-ostree laag.
Geselecteerde installatie en update van pakketten binnen de werkruimte wordt niet ondersteund ā het systeem wordt in zijn geheel atomair bijgewerkt, waarbij de staat volledig verandert. Er zijn middelen beschikbaar voor incrementele toepassing van updates, waardoor een volledige vervanging van de afbeelding bij elke update niet nodig is.
Het gevormde geĆÆsoleerde milieu is volledig onafhankelijk van de gebruikte distributie en heeft, bij de juiste configuratie van het pakket, geen toegang tot de bestanden en processen van de gebruiker of het basissysteem, en kan bovendien niet rechtstreeks communiceren met de hardware, behalve via de DRI-uitvoer. De grafische uitvoer en invoerorganisatie zijn uitgevoerd met behulp van het Wayland-protocol of via socket forwarding van X11. Interactie met de externe omgeving is gebouwd via het DBus-berichtenwisselsysteem en een speciale API Portals.
Voor isolatie wordt de laag Bubblewrap gebruikt, evenals traditionele Linux-technologieƫn voor containervirtualisatie, gebaseerd op het gebruik van cgroups, namespaces, Seccomp en SELinux. Voor geluidsoutput wordt PulseAudio of PipeWire gebruikt. Bij het maken van een pakket kan de isolatie worden uitgeschakeld, wat door de ontwikkelaars van veel populaire pakketten wordt gebruikt om volledige toegang te krijgen tot het bestandssysteem en alle apparaten in het systeem.
Bijvoorbeeld, met een beperkte isolatiestand die volledige toegang tot de home-directory biedt, worden pakketten zoals GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity en VLC geleverd. In het geval van compromittering van pakketten met toegang tot de home-directory, ondanks de aanwezigheid van het label 'sandboxed' in de beschrijving van het pakket, hoeft de aanvaller alleen het bestand ~/ .bashrc te wijzigen om zijn code uit te voeren. Een afzonderlijke vraag is de controle over het aanbrengen van wijzigingen in de pakketten en het vertrouwen in de pakketbouwers, die vaak niet zijn verbonden met het hoofdproject of de distributies.
Bron: opennet.ru
