Rilascio del sistema di pacchetti autonomi Flatpak 1.18.0.

Dopo un anno e mezzo di sviluppo, è stata pubblicata una nuova versione stabile del toolkit Flatpak 1.18, che fornisce un sistema per la creazione di pacchetti autonomi, non legati a specifiche distribuzioni Linux e eseguiti in un contenitore speciale che isola l'applicazione dal resto del sistema. Il supporto per l'esecuzione dei pacchetti Flatpak è garantito per Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux e Ubuntu. I pacchetti Flatpak sono inclusi nel repository Fedora e supportati nei programmi di gestione delle applicazioni GNOME e KDE.

Novità principali nella versione Flatpak 1.18:

  • È stato implementato il supporto per permessi condizionali, che consentono di verificare la presenza di determinate capacità nel sistema o nel runtime quando si richiedono permessi. Ad esempio, per ottenere l'accesso a un dispositivo di input, invece di utilizzare «—device=all», è possibile richiedere il permesso «—device-if=all:!has-input-device —device=input», che fornisce accesso solo ai dispositivi di input oppure torna ad un accesso a tutti i dispositivi se la concessione selettiva non è supportata nel runtime. Allo stesso modo, è possibile richiedere accesso ai dispositivi USB («has-usb-device» e «has-usb-portal») o alle sottosistemi condivisi.
  • È stato consentito l'accesso al dispositivo /dev/ntsync per interagire con
    il modulo del kernel NTSYNC, che implementa un insieme di primitive per la sincronizzazione usate nel kernel di Windows NT e che consente di incrementare significativamente le prestazioni dei giochi Windows eseguiti tramite Wine.
  • Per la GPU Intel Xe è stato attivato il supporto per l'API VA-API per l'accelerazione hardware della decodifica video.
  • È stata realizzata la possibilità di accedere al dispositivo /dev/kfd (Kernel Fusion Driver) utilizzando i permessi forniti per i dispositivi DRI. Il driver kfd implementa un'interfaccia per l'esecuzione diretta di calcoli sulla GPU AMD da applicazioni che utilizzano AMD ROCm, HIP e OpenCL.
  • È stato aggiunto il supporto per l'uso di opzioni da riga di comando per inoltrare l'accesso a directory in applicazioni isolate.
  • È stato aggiunto il supporto per la directory «preinstall.d», che definisce l'elenco delle applicazioni Flatpak preinstallate (per includere le applicazioni Flatpak nel sistema operativo).
  • È consentita l'installazione diretta di applicazioni da immagini di container in formato OCI, che possono essere caricate da repository OCI propri e archivi locali.
  • Nell comando «flatpak install —from» è stato aggiunto il supporto per URI «flatpak+https://».
  • Nel comando «flatpak run» è stata aggiunta l'opzione «—clear-env» per pulire le variabili d'ambiente prima dell'avvio dell'applicazione.
  • È stata fornita la possibilità di esportare la radice della directory dell'ambiente host in un ambiente applicativo isolato con accesso tramite la directory /run/host/root.
  • È stata aggiunta la possibilità di visualizzare il risultato dell'esecuzione dei comandi in formato JSON.
  • È stata potenziata l'isolamento dell'ambiente di build: il comando «flatpak build» ora non fornisce accesso al host di default.
  • È stato aggiunto il comando «reinstall» per reinstallare le dipendenze (bundle).
  • Le impostazioni D-Bus di default sono state trasferite dalla directory /etc a /usr.
  • È stato ridotto il tempo di avvio quando si utilizza l'interprete della shell fish.
  • In libflatpak è stata aggiunta una funzione per ottenere informazioni sulla data di creazione della configurazione, che consente a applicazioni come GNOME Software di determinare quando i dati memorizzati nella cache necessitano di un aggiornamento.
  • L'opzione di build http_backend è stata rimossa; per il download HTTP/HTTPS viene utilizzata la libreria libcurl anziché libsoup2.
  • Di default, è stato abilitato l'uso delle sequenze di escape per indicare il progresso dell'operazione.
  • È stato consentito il passaggio dei diritti di accesso ai dispositivi in ambienti sandbox nidificati creati tramite portali Flatpak.
  • Per le applicazioni distribuite come immagini OCI, è stato attuato un meccanismo per «extra-data», che consente ad esempio di organizzare la riproduzione video h.265 nei pacchetti Flatpak di Fedora Linux.
  • È stata aggiunta la supporto per la compressione delle dipendenze (OCI bundle) utilizzando l'algoritmo zstd, che comprime i dati in modo più efficiente. Di default, per la compressione continua ad essere utilizzato gzip, che garantisce la massima compatibilità.

Flatpak semplifica la distribuzione di software non presente nei repository standard delle distribuzioni, preparando un unico contenitore universale che libera gli sviluppatori dalla necessità di creare diverse build per ogni distribuzione. A coloro che si preoccupano della sicurezza, Flatpak offre la possibilità di eseguire applicazioni sospette all'interno di un contenitore, fornendo accesso selettivo solo alle funzionalità di rete e ai file necessari. A coloro che sono interessati alle novità, Flatpak consente di installare le versioni più recenti di test e stabili delle applicazioni senza necessità di modificare il sistema. Ad esempio, i pacchetti Flatpak vengono creati per LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, ecc.

Per ridurre le dimensioni, nel pacchetto vengono incluse solo le dipendenze specifiche per l'applicazione. Le librerie di base del sistema e grafiche (GTK, Qt, librerie GNOME e KDE, ecc.) vengono fornite sotto forma di ambienti runtime standardizzati. La principale differenza tra Flatpak e Snap è che Snap utilizza i componenti dell'ambiente del sistema principale e l'isolamento basato sulla filtrazione delle chiamate di sistema, mentre Flatpak crea un contenitore separato dal sistema e opera con ampi set di runtime, fornendo come dipendenze non pacchetti, ma ambienti di sistema standardizzati (ad esempio, tutte le librerie necessarie al funzionamento dei programmi GNOME o KDE).

Oltre all'ambiente di sistema standard (runtime), installato tramite un apposito repository, vengono fornite dipendenze aggiuntive (bundle) richieste per il funzionamento dell'applicazione. Insieme, il «runtime» e il «bundle» costituiscono il contenuto del contenitore, con il «runtime» che viene installato separatamente e associato a più contenitori, consentendo di evitare la duplicazione di file di sistema condivisi tra i contenitori.

In un sistema possono essere installati diversi "runtime" (GNOME, KDE) o diverse versioni di uno stesso "runtime" (GNOME 50, GNOME 49). Un contenitore con un'applicazione come dipendenza utilizza il binding a un determinato "runtime", senza considerare i singoli pacchetti che compongono il "runtime" selezionato. Tutti gli elementi mancanti vengono impacchettati direttamente insieme all'applicazione. Durante la creazione del contenitore, il contenuto del "runtime" viene montato come partizione /usr, mentre il "bundle" viene montato nella directory /app.

Il contenuto del «runtime» e dei contenitori delle applicazioni viene creato utilizzando la tecnologia OSTree, che consente l'aggiornamento atomico dell'immagine da un repository simile a Git, permettendo di applicare metodi di controllo di versione ai componenti della distribuzione (ad esempio, è possibile ripristinare rapidamente il sistema a uno stato precedente). I pacchetti RPM vengono tradotti nel repository OSTree tramite un'interfaccia di rpm-ostree.

L'installazione selettiva e l'aggiornamento dei pacchetti all'interno dell'ambiente di lavoro non sono supportati: il sistema viene aggiornato non a livello di singoli componenti, ma interamente, modificando in modo atomico il proprio stato. Viene fornito uno strumento per l'applicazione incrementale degli aggiornamenti, evitando la necessità di sostituire completamente l'immagine ad ogni aggiornamento.

L'ambiente isolato creato non dipende dalla distribuzione utilizzata e, con le giuste impostazioni del pacchetto, non ha accesso ai file e ai processi dell'utente o del sistema principale, né può accedere direttamente all'hardware, eccetto per l'output tramite DRI. L'output grafico e l'organizzazione dell'input sono realizzati utilizzando il protocollo Wayland o tramite il forwarding del socket X11. L'interazione con l'ambiente esterno avviene tramite il sistema di messaggistica DBus e un'API Portals specifica.

Per l'isolamento viene utilizzato uno strato Bubblewrap e tecnologie tradizionali di virtualizzazione dei contenitori basate sull'uso di cgroups, spazi dei nomi (namespaces), Seccomp e SELinux. Durante la creazione del pacchetto, l'isolamento può essere disabilitato, una possibilità sfruttata dagli sviluppatori di alcuni pacchetti per ottenere accesso completo al filesystem e a tutti i dispositivi nel sistema.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster