nuova versione stabile dello strumento , che fornisce un sistema per la creazione di pacchetti autonomi, non legati a distribuzioni Linux specifiche e eseguiti in un contenitore speciale, che isola l'applicazione dal resto del sistema. Il supporto per l'esecuzione dei pacchetti Flatpak è garantito per Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint e Ubuntu. I pacchetti Flatpak sono inclusi nel repository di Fedora e supportati dal gestore di applicazioni GNOME integrato.
Le chiave nella versione Flatpak 1.4:
- Modificata l'organizzazione dell'impostazione dei parametri per i repository esterni. Nella cartella /etc/flatpak/remotes.d invece dei file *.conf con le impostazioni ora si utilizzano file normali «.flatpakrepo», che vengono importati automaticamente al primo utilizzo di flatpak. Questi file possono essere editati e rimossi liberamente, analogamente ai repository aggiunti manualmente;
- Significativa modifica dell'organizzazione delle installazioni di pacchetti disponibili per l'intero sistema. Nelle versioni precedenti, inizialmente il pacchetto veniva installato in una cartella temporanea di proprietà dell'utente, e poi veniva avviato un processo system-helper per l'importo nel sistema da questa cartella. Questo approccio portava a un elevato consumo di risorse su disco, a un eccessivo input/output e a potenziali problemi di sicurezza. Nella nuova versione, per l'installazione dei pacchetti di sistema viene utilizzato un nuovo file system FUSE speciale, in cui l'utente può scrivere dati, ma dopo il termine della scrittura l'accesso ai file scritti viene bloccato per l'utente. Il nuovo approccio implica la necessità di creare un utente separato per flatpak (per impostazione predefinita «flatpak») e modificare le regole SELinux;
- Aggiunta la possibilità di definire sul lato del sistema client filtri per i repository esterni. Con i filtri è possibile limitare le applicazioni visibili nel repository, utilizzando un modello di lista bianca e nera;
- Aggiunta un'API di libreria per aggiungere repository esterni da file flatpakref;
- Aggiunto un profilo seccomp per Docker, che consente di eseguire flatpak all'interno dei contenitori;
- Migliorata la capacità di installazione da più fonti P2P (tramite dispositivi USB o rete locale);
- Nel comando «flatpak remote-ls» è garantita la filtrazione automatica delle applicazioni per cui è scaduto il supporto;
- In «flatpak remote-ls» e «flatpak remote-info» è stata implementata l'opzione «—cached» per fornire informazioni basate su dati memorizzati localmente;
- È stata aggiunta la possibilità di specificare la versione di scadenza del pacchetto, dopo la quale verrà visualizzato un messaggio per passare a un nuovo ramo;
- È stata aggiunta l'opzione «—socket=pcsc» per accedere alle smart card;
- È stato implementato il supporto per sistemi con più schede grafiche NVIDIA;
- È stato implementato il supporto per dconf inserito in un ambiente sandbox;
- Nel comando build-update-repo sono state aggiunte le opzioni «—no-update-[summary,appstream]» e «—static-delta-ignore-ref=PATTERN»;
- È stata significativamente aumentata la velocità di rigenerazione dei rami di appstream per grandi repository.
Ricordiamo che agli sviluppatori di applicazioni Flatpak è data la possibilità di semplificare la distribuzione dei loro programmi, che non fanno parte dei repository ufficiali delle distribuzioni, grazie a di un unico container universale senza la necessità di creare build separate per ogni distribuzione. Per gli utenti attenti alla sicurezza, Flatpak consente di eseguire applicazioni potenzialmente pericolose in un container, offrendo accesso solo alle funzioni di rete e ai file dell'utente correlati all'applicazione. Per gli utenti interessati alle novità, Flatpak consente di installare le versioni più recenti e stabili delle applicazioni, senza dover apportare modifiche al sistema. Ad esempio, attualmente i pacchetti Flatpak sono già per LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, ecc.
Per ridurre la dimensione del pacchetto, esso include soltanto le dipendenze specifiche per l'applicazione, mentre le librerie di sistema e grafiche di base (Gtk+, Qt, librerie GNOME e KDE, ecc.) sono strutturate come ambienti runtime modulabili. La principale differenza tra Flatpak e Snap è che Snap utilizza componenti dell'ambiente del sistema principale e isolamento basato su filtraggio delle chiamate di sistema, mentre Flatpak crea un container separato dal sistema e opera con ampie raccolte di runtime, fornendo come dipendenze non pacchetti, bensì ambienti di sistema standard (ad esempio, tutte le librerie necessarie per il funzionamento di programmi GNOME o KDE).
Oltre all'ambiente di sistema standard (runtime), installato tramite uno speciale , vengono fornite dipendenze aggiuntive (bundle) necessarie per il funzionamento dell'applicazione. In totale, runtime e bundle formano il contenuto del container, dato che il runtime viene installato separatamente e collegato a più container, il che consente di evitare la duplicazione di file di sistema comuni per i container. In un sistema possono essere installati diversi runtime (GNOME, KDE) o più versioni di uno stesso runtime (GNOME 3.26, GNOME 3.28). Il container con l'applicazione come dipendenza utilizza il collegamento solo a un determinato runtime, senza considerare i singoli pacchetti di cui è composto il runtime. Tutti gli elementi mancanti vengono confezionati direttamente insieme all'applicazione. Durante la creazione del container, il contenuto del runtime viene montato come partizione /usr, mentre il bundle viene montato nella directory /app.
Il contenuto del runtime e dei container delle applicazioni è costituito utilizzando la tecnologia , in cui l'immagine viene aggiornata in modo atomico da un repository simile a Git, consentendo di applicare metodi di controllo versione ai componenti della distribuzione (ad esempio, è possibile riportare rapidamente il sistema a uno stato precedente). I pacchetti RPM vengono trasmessi al repository OSTree tramite un apposito strato . L'installazione e l'aggiornamento separati dei pacchetti all'interno dell'ambiente di lavoro non sono supportati; il sistema viene aggiornato non a livello di singoli componenti, ma nel complesso, modificando in modo atomico il proprio stato. Vengono forniti strumenti per l'applicazione incrementale degli aggiornamenti, eliminando la necessità di una sostituzione completa dell'immagine ad ogni aggiornamento.
L'ambiente isolato creato è completamente indipendente dalla distribuzione utilizzata e, con le impostazioni corrette del pacchetto, non ha accesso ai file e ai processi dell'utente o del sistema principale, non può accedere direttamente all'hardware, ad eccezione dell'output tramite DRI e del sottosistema di rete. L'output grafico e l'organizzazione dell'input avviene utilizzando il protocollo Wayland o tramite il passaggio del socket X11. L'interazione con l'ambiente esterno è basata sul sistema di messaggistica DBus e su un'API Portals specifica. Per l'isolamento strato intermedio e le tecnologie tradizionali di virtualizzazione dei container in Linux, basate sull'uso di cgroups, spazi dei nomi (namespaces), Seccomp e SELinux. Per l'output audio viene utilizzato PulseAudio.
Fonte: opennet.ru
