Udgivelse af systemet med selvstændige pakker Flatpak 1.18.0

Efter halvandet års udvikling er den nye stabile version af værktøjet Flatpak 1.18 offentliggjort. Det giver et system til at bygge selvstændige pakker, der ikke er knyttet til specifikke Linux-distributioner og kører i et specielt container, der isolerer applikationen fra resten af systemet. Flatpak-pakker understøttes på Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux og Ubuntu. Flatpak-pakker er inkluderet i Fedora-repositoriet og understøttes i de indbyggede applikationsstyringsprogrammer GNOME og KDE.

Nøgleinnovationer i Flatpak 1.18:

  • Understøttelse af betingede tilladelser (conditional permission) er blevet implementeret, så man ved anmodning om tilladelser kan kontrollere tilstedeværelsen af specifikke muligheder i systemet eller i runtime. For eksempel, i stedet for "—device=all", kan man anmode om tilladelsen "—device-if=all:!has-input-device —device=input", hvilket kun giver adgang til indput-enheder eller falder tilbage til at give adgang til alle enheder, hvis selektiv adgang ikke understøttes i runtime. Tilsvarende kan man anmode om adgang til USB-enheder ("has-usb-device" og "has-usb-portal") eller delte underlag.
  • Adgang til enheden /dev/ntsync til at tilgå
    NTSYNC-kernelmodulet, som implementerer et sæt primitivs til synkronisering, der anvendes i Windows NT-kernen og markant kan øge ydeevnen af Windows-spil, der køres via Wine.
  • Understøttelsen af API VA-API for hardwareacceleration af video-decoding er aktiveret for Intel Xe GPU.
  • Muligheden for at få adgang til enheden /dev/kfd (Kernel Fusion Driver) med de tilladelser, der gives for DRI-enheder, er blevet implementeret. Kfd-driveren implementerer et interface til at udføre beregninger direkte på AMD GPU'er fra applikationer, der bruger AMD ROCm, HIP og OpenCL.
  • Understøttelse af at bruge kommandolinjeindstillinger til at give adgang til kataloger i isolerede applikationer er blevet tilføjet.
  • Støtte til kataloget "preinstall.d" er blevet tilføjet, der definerer en liste over forudinstallerede Flatpak-applikationer (for at inkludere Flatpak-applikationer i operativsystemet).
  • Direkte installation af applikationer fra OCI-containerbilleder, som kan downloades fra egne OCI-repositorier og lokale arkiver, er blevet tilladt.
  • Understøttelse af URI 'flatpak+https://' er blevet tilføjet til kommandoen 'flatpak install —from'.
  • Der kommando «flatpak run» er inkluderet muligheden «—clear-env» til at rydde miljøvariabler før applikationen startes.
  • Muligheden for at eksportere rodkataloget fra værtsmiljøet til applikationens isolerede miljø med adgang via kataloget /run/host/root er givet.
  • Muligheden for at udskrive resultaterne af kommandoer i JSON-format er tilføjet.
  • Isoleringen af bygge-miljøet er forbedret - kommandoen «flatpak build» giver nu som standard ikke adgang til værten.
  • Kommandoen «reinstall» er tilføjet til geninstallation af afhængigheder (bundle).
  • D-Bus indstillingerne er som standard flyttet fra kataloget /etc til /usr.
  • Opstarts tiden er blevet reduceret ved brug af kommandotolk fish.
  • I libflatpak er der tilføjet en funktion til at hente information om oprettelsestidspunktet for konfigurationen, hvilket giver applikationer som GNOME Software mulighed for at bestemme, at deres cachelagrede data skal opdateres.
  • Byggeområdet http_backend er fjernet, og i stedet anvendes biblioteket libcurl til HTTP/HTTPS hentning.
  • Brug af escape-sekvenser til at indikere fremskridten i operationen er som standard aktiveret.
  • Det er tilladt at videregive adgangsrettigheder til enheder i indlejrede sandbox-miljøer oprettet gennem Flatpak-porte.
  • For applikationer leveret som OCI-billeder er der implementeret en mekanisme for «extra-data», som f.eks. muliggør afspilning af video h.265 i Flatpak-pakker til Fedora Linux.
  • Understøttelse af komprimering af afhængigheder (OCI bundle) med zstd-algoritmen, der komprimerer data mere effektivt, er nu tilføjet. Som standard fortsætter gzip med at blive brugt til komprimering for maksimal kompatibilitet.

Flatpak forenkler distributionen af programmer, der ikke er inkluderet i standard repositorys for distributioner, ved at forberede en universel container, der befrier programudviklere fra nødvendigheden af at lave separate builds til hver distribution. For brugere, der bekymrer sig om sikkerhed, giver Flatpak mulighed for at køre tvivlsomme applikationer i en container, hvilket giver selektiv adgang kun til nødvendige netværksfunktioner og brugerfiler. For brugere, der er interesserede i nyheder, muliggør Flatpak installation af de nyeste test- og stabile versioner af applikationer uden behov for at ændre systemet. For eksempel er Flatpak-pakker tilgængelige for LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio osv.

For at reducere størrelsen inkluderer pakken kun applikationsspecifikke afhængigheder. Grundlæggende system- og grafiske biblioteker (GTK, Qt, GNOME og KDE biblioteker osv.) leveres som plug-in type runtime-miljøer. Den vigtigste forskel mellem Flatpak og Snap er, at Snap bruger komponenter fra det primære systems miljø og isolering baseret på filtrering af systemopkald, mens Flatpak opretter en separat container fra systemet og opererer med store runtime-sæt, der leverer typiske systemmiljøer som afhængigheder (for eksempel alle biblioteker nødvendige for at køre GNOME eller KDE programmer).

Udover det typiske systemmiljø (runtime), der installeres via et specielt repository, leveres der yderligere afhængigheder (bundle), der kræves for at køre applikationen. Sammen danner "runtime" og "bundle" fyldet i containeren, hvor "runtime" installeres separat og knyttes til flere containere, hvilket gør det muligt at undgå at duplicere fælles systemfiler for containere.

I ét systeme kan der installeres flere forskellige "runtime" (GNOME, KDE) eller flere versioner af én "runtime" (GNOME 50, GNOME 49). Containeren med applikationen som afhængighed bruger kun bindingen til et bestemt "runtime", uden at tage højde for de enkelte pakker, der danner den valgte "runtime". Alle manglende elementer pakkes direkte sammen med applikationen. Ved oprettelse af containeren monteres indholdet af "runtime" som partition /usr, mens "bundle" monteres i kataloget /app.

Indholdet af "runtime" og applikationscontainere dannes ved hjælp af OSTree-teknologi, hvor billedet atomart opdateres fra et Git-lignende lager, der gør det muligt at anvende versioneringsmetoder til komponenterne i distributionen (for eksempel kan systemet hurtigt rulles tilbage til en tidligere tilstand). RPM-pakker transkriberes til OSTree-repositoriet ved hjælp af lag af rpm-ostree.

Valgfrie installationer og opdateringer af pakker inden for arbejdsmiljøet understøttes ikke — systemet opdateres ikke på niveauet for enkelte komponenter, men fuldt ud, atomart ændring af sin tilstand. Der leveres værktøjer til inkrementel anvendelse af opdateringer, der fjerner behovet for fuld udskiftning af billedet ved hver opdatering.

Det isolerede miljø, der dannes, er uafhængigt af den anvendte distribution og har under passende pakkeindstillinger ikke adgang til brugerens filer og processer eller hovedsystemet, og kan heller ikke direkte tilgå hardware, bortset fra output gennem DRI. Grafikudgang og indtastningsorganisering er realiseret ved hjælp af Wayland-protokollen eller gennem videresendelse af X11-sockets. Interaktion med det eksterne miljø er bygget op gennem DBus-messagesystemet og en speciel API Portals.

Til isolering anvendes lag af Bubblewrap og traditionelle containervirtualiseringsteknologier for Linux, der er baseret på brugen af cgroups, namespaces, Seccomp og SELinux. Ved oprettelse af en pakke kan isoleringen deaktiveres, hvilket visse pakkeudviklere benytter sig af for at få fuld adgang til filsystemet og alle enheder i systemet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster