Lansarea sistemului de pachete autonome Flatpak 1.14.0

A fost publicată o nouă ramură stabilă a setului de instrumente Flatpak 1.14, care oferă un sistem pentru construirea de pachete autonome care nu sunt legate de distribuții Linux specifice și rulează într-un container special care izolează aplicația de restul sistemului. Suport pentru rularea pachetelor Flatpak este oferit pentru Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux și Ubuntu. Pachetele Flatpak sunt incluse în depozitul Fedora și sunt acceptate de managerul de aplicații GNOME nativ.

Inovații cheie în ramura Flatpak 1.14:

  • Este posibil să creați un director pentru fișierele în stare (.local/state) și să setați variabila de mediu XDG_STATE_HOME care să indice acest director.
  • S-au adăugat verificări condiționate de forma „have-kernel-module-name” pentru a determina prezența modulelor kernel (un analog universal al verificării have-intel-gpu propuse anterior, în loc de care expresia „have-kernel-module-i915 ” poate fi folosit acum).
  • Comanda „flatpak document-unexport —doc-id=…” a fost implementată.
  • Este furnizat exportul metadatelor Appstream pentru utilizare în mediul principal.
  • S-au adăugat reguli de finalizare a comenzilor flatpak pentru coajă de pește
  • Accesul în rețea la serviciile X11 și PulseAudio este permis (dacă sunt adăugate setările corespunzătoare).
  • Ramura principală din depozitul Git a fost redenumită din „master” în „principal”, deoarece cuvântul „master” a fost recent considerat incorect din punct de vedere politic.
  • Scripturile de lansare sunt acum rescrise dacă aplicația este redenumită.
  • S-au adăugat opțiunile „--include-sdk” și „--include-debug” la comanda de instalare pentru a instala fișierele SDK și debuginfo.
  • S-a adăugat suport pentru parametrul „DeploySideloadCollectionID” la fișierele flatpakref și flatpakrepo. Când este setat, ID-ul colecției va fi setat la adăugarea unui depozit de la distanță și nu după încărcarea metadatelor.
  • A permis crearea de medii sandbox imbricate pentru manipulatori în sesiuni cu nume separate MPRIS (Media Player Remote Interfacing Specification).
  • Utilitarele liniei de comandă oferă acum informații despre utilizarea extensiilor de rulare învechite.
  • Comanda de dezinstalare implementează o solicitare de confirmare înainte de a elimina extensiile runtime sau runtime care sunt încă în uz.
  • S-a adăugat suport pentru opțiunea „--socket=gpg-agent” la comenzi precum „flatpak run”.
  • A fost remediată o vulnerabilitate în libostree care ar putea permite unui utilizator să ștergă fișiere arbitrare de pe sistem prin manipularea handler-ului flatpak-system-helper (trimiterea unei cereri de ștergere cu un nume de ramură special formatat). Problema apare doar în versiunile mai vechi ale Flatpak și libostree lansate înainte de 2018 (< 0.10.2) și nu afectează versiunile actuale.

Să vă reamintim că Flatpak permite dezvoltatorilor de aplicații să simplifice distribuția programelor lor care nu sunt incluse în depozitele de distribuție standard prin pregătirea unui container universal fără a crea ansambluri separate pentru fiecare distribuție. Pentru utilizatorii conștienți de securitate, Flatpak vă permite să rulați o aplicație discutabilă într-un container, oferind acces numai la funcțiile de rețea și fișierele utilizator asociate cu aplicația. Pentru utilizatorii interesați de produse noi, Flatpak vă permite să instalați cele mai recente versiuni de testare și versiuni stabile ale aplicațiilor fără a fi nevoie să faceți modificări sistemului. De exemplu, pachetele Flatpak sunt construite pentru LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio etc.

Pentru a reduce dimensiunea pachetului, acesta include numai dependențe specifice aplicației, iar bibliotecile de bază de sistem și grafice (biblioteci GTK, Qt, GNOME și KDE etc.) sunt proiectate ca medii de rulare standard de plug-in. Diferența cheie dintre Flatpak și Snap este că Snap utilizează componentele mediului de sistem principal și izolarea bazată pe filtrarea apelurilor de sistem, în timp ce Flatpak creează un container separat de sistem și funcționează cu seturi mari de rulare, oferind nu pachete ca dependențe, ci standard. mediile de sistem (de exemplu, toate bibliotecile necesare pentru funcționarea programelor GNOME sau KDE).

Pe lângă mediul de sistem standard (runtime), instalat printr-un depozit special, sunt furnizate dependențe suplimentare (bundle) necesare pentru funcționarea aplicației. În total, runtime și pachetul formează umplerea containerului, în ciuda faptului că runtime este instalat separat și legat de mai multe containere simultan, ceea ce vă permite să evitați duplicarea fișierelor de sistem comune containerelor. Un sistem poate avea instalate mai multe runtime diferite (GNOME, KDE) sau mai multe versiuni ale aceluiași runtime (GNOME 3.40, GNOME 3.42). Un container cu o aplicație ca dependență folosește o legătură doar cu un anumit timp de execuție, fără a lua în considerare pachetele individuale care alcătuiesc timpul de execuție. Toate elementele lipsă sunt ambalate direct cu aplicația. Când se formează un container, conținutul runtime este montat ca partiție /usr, iar pachetul este montat în directorul /app.

Containerele de rulare și aplicații sunt construite folosind tehnologia OSTree, în care imaginea este actualizată atomic dintr-un depozit asemănător Git, ceea ce permite metodelor de control al versiunii să fie aplicate componentelor de distribuție (de exemplu, puteți rula rapid înapoi sistemul la un starea anterioară). Pachetele RPM sunt traduse în depozitul OSTree folosind un strat special rpm-ostree. Instalarea și actualizarea separată a pachetelor în mediul de lucru nu este acceptată; sistemul este actualizat nu la nivelul componentelor individuale, ci în ansamblu, schimbându-și atomic starea. Oferă instrumente pentru aplicarea progresivă a actualizărilor, eliminând nevoia de a înlocui complet imaginea cu fiecare actualizare.

Mediul izolat generat este complet independent de distribuția utilizată și, cu setări adecvate ale pachetului, nu are acces la fișierele și procesele utilizatorului sau sistemul principal, nu poate accesa direct echipamentul, cu excepția ieșirii prin DRI, și apeluri către subsistemul de rețea. Ieșirea grafică și organizarea intrărilor sunt implementate folosind protocolul Wayland sau prin redirecționarea socket-ului X11. Interacțiunea cu mediul extern se bazează pe sistemul de mesagerie DBus și pe un portal API special.

Pentru izolare, se utilizează stratul Bubblewrap și tehnologiile tradiționale de virtualizare a containerelor Linux, bazate pe utilizarea cgroups, namespaces, Seccomp și SELinux. PulseAudio este folosit pentru a scoate sunet. În acest caz, izolarea poate fi dezactivată, care este folosită de dezvoltatorii multor pachete populare pentru a obține acces deplin la sistemul de fișiere și la toate dispozitivele din sistem. De exemplu, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity și VLC vin cu un mod de izolare limitat care lasă acces deplin la directorul principal. Dacă pachetele cu acces la directorul principal sunt compromise, în ciuda prezenței etichetei „sandbox” în descrierea pachetului, atacatorul trebuie doar să schimbe fișierul ~/.bashrc pentru a-și executa codul. O problemă separată este controlul modificărilor aduse pachetelor și încrederea în constructorii de pachete, care adesea nu sunt asociați cu proiectul sau distribuțiile principale.

Sursa: opennet.ru

Adauga un comentariu