o nouă ramură stabilă a instrumentului , care oferă un sistem pentru construirea de pachete autonome, nelegate de distribuții specifice Linux și care rulează într-un container special, izolând aplicația de restul sistemului. Suportul pentru rularea pachetelor Flatpak este asigurat pentru Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint și Ubuntu. Pachetele Flatpak sunt incluse în depozitul Fedora și sunt suportate în aplicația de gestionare GNOME.
Principalele în ramura Flatpak 1.4:
- A fost modificată organizarea setărilor pentru repozitoarele externe. În directorul /etc/flatpak/remotes.d, în loc de fișierele *.conf cu setările, acum se folosesc fișierele normale „.flatpakrepo”, care sunt importate automat la prima utilizare a flatpak. Aceste fișiere pot fi editate și șterse în mod liber, similar cu repozitoarele adăugate manual;
- Organizarea instalărilor pachetelor disponibile pentru întreaga sysmtemă a fost semnificativ schimbată. În versiunile anterioare, mai întâi pachetul era instalat într-un director temporar aparținând utilizatorului, iar ulterior se activa procesul system-helper pentru a importa în sistem din acest director. Această abordare ducea la un consum mare de resurse de disc, intrări/ieșiri excesive și probleme potențiale de securitate. În noua versiune, pentru instalarea pachetelor sistemului este utilizată o nouă sistem de fișiere FUSE, în care utilizatorul poate scrie date, dar accesul la fișierele scrise este blocat pentru utilizator după finalizarea scrierii. Noua abordare implică necesitatea de a crea un utilizator separat pentru flatpak (implicit „flatpak”) și modificarea regulilor SELinux;
- A fost adăugată posibilitatea de a defini, la nivelul sistemului client, filtre pentru repozitoarele externe. Prin intermediul filtrelor, se pot restricționa aplicațiile vizibile în repozitoriu, folosind un model de liste albe și negre;
- A fost adăugat un API de biblioteci pentru a adăuga repozitoare externe din fișiere flatpakref;
- A fost adăugat un profil seccomp pentru Docker, permițând rularea flatpak în interiorul containerelor;
- A fost îmbunătățită capacitatea de instalare din mai multe surse P2P (prin unități USB sau peste rețeaua locală);
- În comanda „flatpak remote-ls”, a fost asigurată filtrarea automată a aplicațiilor pentru care a expirat perioada de suport;
- În „flatpak remote-ls” și „flatpak remote-info” a fost implementată opțiunea „—cached” pentru a furniza informații bazate pe datele locale memorate în cache;
- A fost adăugată posibilitatea de a specifica versiunea de expirare a pachetului, după care va fi afișată o sugestie pentru a trece la un nou branch;
- A fost adăugată opțiunea „—socket=pcsc” pentru a obține acces la cardurile smart;
- A fost adăugată suport pentru sisteme care au mai multe plăci grafice NVIDIA;
- A fost implementat suport pentru dconf, plasat într-un mediu sandbox;
- Comenzii build-update-repo i-au fost adăugate opțiunile „—no-update-[summary,appstream]” și „—static-delta-ignore-ref=PATTERN”;
- S-a îmbunătățit semnificativ viteza de regenerare a branch-urilor appstream pentru repozitorii mari.
Să reamintim că dezvoltatorii de aplicații Flatpak au posibilitatea de a simplifica distribuția programelor lor, care nu fac parte din repozitoarele standard ale distribuțiilor, prin unui singur container universal fără a crea build-uri separate pentru fiecare distribuție. Pentru utilizatorii care sunt preocupați de securitate, Flatpak permite rularea aplicațiilor considerate riscante într-un container, oferind acces doar la funcțiile de rețea și fișierele utilizatorului legate de aplicație. Pentru utilizatorii interesați de noutăți, Flatpak permite instalarea celor mai recente versiuni beta și stabile ale aplicațiilor, fără a fi necesare modificări ale sistemului. De exemplu, în prezent, pachetele Flatpak sunt deja pentru LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio și altele.
Pentru a reduce dimensiunea pachetului, acesta include doar dependențele specifice aplicației, iar bibliotecile sistemice și grafice de bază (Gtk+, Qt, biblioteci GNOME și KDE etc.) sunt prezentate sub formă de medii de rulare tipice. Diferența cheie între Flatpak și Snap constă în faptul că Snap utilizează componente ale mediului de bază al sistemului și izolație bazată pe filtrarea apelurilor de sistem, în timp ce Flatpak creează un container separat de sistem și operează cu seturi mari de runtime, oferind ca dependențe nu pachete, ci medii sistemice tipice (de exemplu, toate bibliotecile necesare pentru funcționarea programelor GNOME sau KDE).
Pe lângă mediul sistemic tipic (runtime), care este instalat printr-un , se livrează dependențe suplimentare (bundle) necesare pentru funcționarea aplicației. În total, runtime și bundle formează conținutul containerului, având în vedere că runtime-ul se instalează separat și se leagă de mai multe containere, ceea ce permite evitarea duplicării fișierelor de sistem comune pentru containere. Într-un sistem pot fi instalate mai multe runtime-uri diferite (GNOME, KDE) sau mai multe versiuni ale aceluiași runtime (GNOME 3.26, GNOME 3.28). Containerul cu aplicația ca dependență folosește legătura doar la un anumit runtime, fără a lua în considerare pachetele individuale din care este format runtime-ul. Toate elementele lipsă sunt împachetate împreună cu aplicația. Atunci când se formează containerul, conținutul runtime-ului este montat ca partiție /usr, iar bundle-ul este montat în directorul /app.
Conținutul runtime-ului și al containerelor de aplicații este format folosind tehnologia , care permite actualizarea atomică a imaginii dintr-un depozit similar Git, permițând aplicarea metodelor de control al versiunii la componentele distribuției (de exemplu, se poate reveni rapid sistemul la o stare anterioară). Pachetele RPM sunt traduse în depozitul OSTree cu ajutorul unei straturi speciale . Instalarea și actualizarea separată a pachetelor în interiorul mediului de lucru nu sunt acceptate, sistemul se actualizează nu la nivelul componentelor individuale, ci în întregime, schimbând atomic starea sa. Se oferă instrumente pentru aplicarea incrementală a actualizărilor, evitând necesitatea înlocuirii complete a imaginii la fiecare actualizare.
Mediul izolat generat este complet independent de distribuția utilizată și, cu configurările corecte ale pachetului, nu are acces la fișierele și procesele utilizatorului sau ale sistemului principal, nu poate accesa direct hardware-ul, cu excepția ieșirii prin DRI și subsistemul de rețea. Ieșirea grafică și organizarea intrării se realizează prin intermediul protocolului Wayland sau prin redirecționarea socket-ului X11. Interacțiunea cu mediul extern se bazează pe un sistem de schimb de mesaje DBus și un API special Portals. Pentru izolare stratul și tehnologiile tradiționale de virtualizare a containerelor bazate pe utilizarea cgroups, spațiilor de nume (namespaces), Seccomp și SELinux. Pentru ieșirea sunetului se folosește PulseAudio.
Sursa: opennet.ro
