Dopo oltre tre anni di sviluppo, è stata rilasciata la versione 1.5 del gestore di pacchetti GNU Guix e della distribuzione GNU/Linux basata su di esso, Guix System. In futuro, si prevede di rilasciare nuove versioni di GNU Guix una volta all'anno. Sono stati creati immagini per l'installazione su USB Flash (972 MB) e per l'utilizzo in sistemi di virtualizzazione (1.4 GB). È supportato il funzionamento su architetture i686, x86_64, Power9, armv7, riscv64 e aarch64.
La distribuzione consente l'installazione sia come sistema operativo autonomo in ambienti di virtualizzazione, all'interno di contenitori e su hardware comune, sia l'esecuzione in distribuzioni GNU/Linux già installate, fungendo da piattaforma per il deployment di applicazioni. Agli utenti vengono fornite funzionalità come la gestione delle dipendenze, la compilazione riproducibile, l'esecuzione senza root, il ripristino a versioni precedenti in caso di problemi, la gestione della configurazione e il clonaggio degli ambienti (creazione di una copia esatta dell'ambiente software su altri computer).
Novità principali:
- È stata aggiunta la supporto sperimentale per il kernel GNU Hurd (x86_64-gnu). Nell'installatore è stata aggiunta l'opzione per utilizzare Hurd invece del kernel Linux.
- È stato aggiunto il supporto per l'architettura RISC-V (riscv64-linux).
- La session GNOME è stata aggiornata con il rilascio di GNOME 46 (nel precedente rilascio era presente GNOME 42) ed è stata configurata per utilizzare Wayland come predefinito. È stata ampliata la modularità del servizio gnome-desktop-service-type, dove ora è possibile configurare l'elenco delle applicazioni GNOME preinstallate.
- È stato aggiunto un nuovo tipo di servizi plasma-desktop-service-type per la creazione di ambienti con il desktop KDE Plasma 6.5.

- È stata fornita la possibilità di eseguire un processo in background Guix senza privilegi di root. Durante l'installazione su distribuzioni diverse da Guix System, è attivata per impostazione predefinita la modalità rootless. In installazioni esistenti, questa modalità può essere attivata impostando "(privileged? #f)" in guix-configuration. La modalità è stata implementata utilizzando lo spazio dei nomi degli identificatori utente (user namespace) e profili AppArmor.
- Sono stati aggiunti backend per GraphML e CycloneDX JSON al comando "guix graph", consentendo di utilizzarlo per generare SBOM (Software Bill of Material) completi.
- Sono state aggiunte opzioni al comando "guix shell" come "—nesting" per utilizzare Guix in un contenitore e "—emulate-fhs" per eseguire applicazioni utilizzando una struttura del file system conforme alla specifica FHS (Filesystem Hierarchy Standard).
- Nel comando «guix pack» sono stati aggiunti backend per la creazione di pacchetti nei formati RPM e AppImages, utilizzabili in altre distribuzioni senza Guix.
- Implementato il comando «guix locate» per cercare pacchetti che contengono un file specificato.
- Attivata una nuova versione del sistema di init GNU Shepherd 1.0, che introduce il supporto per i servizi che eseguono periodicamente comandi o codice in Scheme secondo un programma prestabilito. Aggiunta la possibilità di riavviare il kernel Linux utilizzando il meccanismo kexec. Implementati nuovi servizi di log-rotation, system-log, timer e transient. In Guix, i servizi system-log e log-rotation vengono utilizzati al posto di syslogd e Rottlog.
- Implementato il supporto completo per il bootstrap dei compilatori Zig e Mono a partire dal codice sorgente.
- Il set «setuid-programs» è stato sostituito da «privileged-programs» nella specifica «operating-system» (invece del flag suid per ottenere privilegi, sono state utilizzate le capabilities di Linux).
- Aggiunti circa 40 nuovi servizi di sistema, tra cui Forgejo Runner, RabbitMQ, iwd e dhcpcd.
- Le versioni dei programmi sono state aggiornate in 8911 pacchetti, aggiungendo 12525 nuovi pacchetti. Tra le novità, sono state aggiornate le versioni di GNOME 46.10, KDE Plasma 6.5, linux-libre 6.17.12, MATE 1.28.2, Xfce 4.20.0, lxde 0.99.3, xorg-server 21.1.21, GCC 15.2.0, LLVM 21.1.8, GIMP 3.0.4, glibc 2.41, go 1.25.3, Librewolf 140, icecat 140.6.0-gnu1 (firefox), icedtea 3.19.0, inkscape 1.3.2, julia 1.8.5, libreoffice 25.2.5.2, openjdk 25, perl 5.36.0, python 3.11.14, racket 8.18, rust 1.85.1, r 4.5.2, sbcl 2.5.8.
Ricordiamo che il gestore di pacchetti GNU Guix si basa sui lavori del progetto Nix e, oltre alle tipiche funzioni di gestione dei pacchetti, supporta funzionalità come l'esecuzione di aggiornamenti transazionali, la possibilità di ripristinare aggiornamenti, il funzionamento senza privilegi di superutente, il supporto per profili legati a singoli utenti, la possibilità di installare più versioni di un programma contemporaneamente e strumenti di pulizia (identificazione e rimozione delle versioni di pacchetti non utilizzate). Per definire gli scenari di compilazione delle applicazioni e le regole di creazione dei pacchetti, si propone di utilizzare un linguaggio di alto livello specializzato e componenti dell'API Guile Scheme, che consentono di eseguire tutta la gestione dei pacchetti in un linguaggio di programmazione funzionale come Scheme.
È possibile utilizzare i pacchetti preparati per il gestore di pacchetti Nix e ospitati nel repository Nixpkgs. Oltre alle operazioni sui pacchetti, è possibile creare script per gestire la configurazione delle applicazioni. Durante la compilatione di un pacchetto, tutte le dipendenze correlate vengono automaticamente scaricate e assemblate. È possibile sia scaricare pacchetti binari già pronti dal repository, sia compilarli dai sorgenti con tutte le dipendenze. Sono disponibili strumenti per mantenere aggiornate le versioni dei programmi installati attraverso l'organizzazione dell'installazione degli aggiornamenti da un repository esterno.
L'ambiente di assemblaggio per i pacchetti è costituito da un contenitore che include tutti i componenti necessari per il funzionamento delle applicazioni, consentendo così di formare un insieme di pacchetti in grado di operare senza dipendere dalla composizione dell'ambiente di sistema di base della distribuzione in cui Guix viene utilizzato come sovrastruttura. È possibile definire le dipendenze tra i pacchetti Guix; per cercare le dipendenze già installate si utilizza la scansione degli identificatori hash nella directory dei pacchetti installati. I pacchetti vengono installati in un albero di directory separato o in una sottodirectory all'interno della cartella dell'utente, il che consente di garantire la coesistenza parallela con altri gestori di pacchetti e supporta varie distribuzioni. Ad esempio, un pacchetto è installato come /nix/store/452a4978f3b1b428064a2b64a0c6f41-firefox-147.0.1/, dove "452a49…" è l'identificatore unico del pacchetto, utilizzato per il controllo delle dipendenze.
Il sistema include solo componenti liberi ed è fornito con il kernel GNU Linux-Libre, privo di elementi binari non liberi. Per la compilazione viene utilizzato GCC 15.2. Come sistema di init viene impiegato il gestore di servizi GNU Shepherd (precedentemente dmd), sviluppato come alternativa a SysV-init con supporto per le dipendenze. Il demone di gestione e gli strumenti di Shepherd sono scritti in Guile (una delle implementazioni del linguaggio Scheme), che viene utilizzato anche per definire i parametri di avvio dei servizi. L'immagine di base supporta l'uso in modalità console, ma sono disponibili 29932 pacchetti precompilati, tra cui componenti dello stack grafico, gestori di finestre e compositori, desktop GNOME, KDE e Xfce, oltre a una selezione di applicazioni grafiche.
Fonte: opennet.ru

