NixOS
NixOS è una distribuzione GNU/Linux libera e open source basata sul gestore di pacchetti Nix. NixOS adotta un approccio immutabile e un modello di aggiornamento atomico.[5] Si configura in maniera dichiarativa, consentendo così riproducibilità e portabilità.[6] La configurazione di NixOS è divisa in moduli componibili, ed è scritta in un linguaggio funzionale ad-hoc, chiamato anch'esso Nix. I pacchetti a disposizione sono definiti nel progetto Nixpkgs. StoriaNel 2003, Eelco Dolstra ha iniziato a sviluppare Nix come progetto di ricerca.[7] Lo scopo del progetto era quello di realizzare un sistema per un corretto deploy del software.[8] Ha influito sul progetto anche Eelco Visser, che aveva supervisionato il suo dottorato di ricerca all'Università di Utrecht.[9] Nel 2006, Armijn Hemel presentò NixOS come risultato della sua tesi magistrale al medesimo ateneo.[10] Nel 2015, è stata istituita la NixOS Foundation, con sede nei Paesi Bassi. Il suo obiettivo è quello di supportare progetti come NixOS che implementano il modello di deploy funzionale puro.[11] Versioni
NixOS pubblica due versioni stabili l'anno, solitamente verso la fine di maggio e la fine di novembre.[12][13][14] Funzionalità![]() Configurazione dichiarativaAll'interno di NixOS, l'intero sistema operativo viene generato dal gestore dei pacchetti Nix a partire da un file di configurazione, scritto nel linguaggio Nix. Questo vale anche per il kernel, le applicazioni, i pacchetti di sistema e i file di configurazione. La creazione di una nuova versione non sovrascriverà le versioni precedenti.[15] Infatti è sempre possibile scegliere di avviare una vecchia configurazione.
Una macchina con NixOS viene configurata scrivendo una specifica delle funzionalità che l'utente desidera in un file di configurazione globale (solitamente in {
boot.loader.grub.device = "/dev/sda";
fileSystems."/".device = "/dev/sda1";
services.sshd.enable = true;
}
Dopo aver modificato il file sopracitato, il sistema può essere ricreato utilizzando il comando Aggiornamenti affidabili e atomiciPoiché le configurazioni di Nix sono pure e dichiarative, la loro valutazione produrrà sempre lo stesso risultato, indipendentemente dai pacchetti o dai file di configurazione presenti nel sistema. NixOS utilizza le transazioni durante l'applicazione della configurazione, rendendo atomiche le modifiche alla configurazione, come gli aggiornamenti. Ad esempio, se l'applicazione di una nuova configurazione viene interrotto da una mancanza di corrente, il sistema sarà comunque in uno stato completamente e correttamente funzionante: si avvierà nella vecchia o nella nuova configurazione.[17] Ripristino di vecchie configurazioniSe dopo un aggiornamento del sistema la nuova configurazione non funziona o non è quella desiderata, è possibile ripristinarla utilizzando un comando speciale ( Configurazioni riproducibiliIl modello dichiarativo di configurazione di NixOS semplifica la riproduzione di una configurazione di sistema su un'altra macchina. Copiando il file di configurazione sul computer di destinazione ed eseguendo il comando di aggiornamento del sistema viene generata la stessa identica configurazione di sistema (kernel, applicazioni, servizi di sistema, ...), ad eccezione delle parti del sistema non gestite dal gestore pacchetti, come i dati dell'utente. Compilazione dal codice sorgente con cache binariaCol linguaggio Nix si specifica come compilare i pacchetti a partire dal codice sorgente. Questo permette all'utente di poter modificare facilmente i programmi, come in altre distribuzioni basate sul codice sorgente dei programmi (ad esempio Gentoo). Tuttavia, poiché la compilazione dal codice sorgente è un processo lento, il gestore dei pacchetti scarica automaticamente i binari precompilati da un server cache quando sono disponibili. È possibile disabilitare la cache binaria e forzare la compilazione dal sorgente utilizzando l'argomento CoerenzaIl gestore dei pacchetti Nix garantisce che il sistema in esecuzione sia coerente con le specifiche fornite, il che significa che ricreerà tutti i pacchetti che non sono più validi. Ad esempio, se il kernel viene modificato, il gestore dei pacchetti garantirà che i moduli del kernel esterni vengano ricostruiti. Allo stesso modo, quando una libreria viene aggiornata, si garantisce che tutti i pacchetti di sistema utilizzino la nuova versione, anche i pacchetti ad essa collegati staticamente. Gestione pacchetti multiutenteNon sono necessari privilegi speciali per installare software in NixOS. Oltre al profilo di sistema, ogni utente ha un profilo dedicato in cui può installare pacchetti. Nix consente inoltre la coesistenza di più versioni dello stesso pacchetto, in modo che utenti diversi possano avere versioni diverse dello stesso pacchetto installate nei rispettivi profili. Se due utenti installano la stessa versione di un pacchetto, verrà creata o scaricata solo una copia. ImplementazioneNixOS si basa sul gestore di pacchetti Nix, che salva tutti i pacchetti isolati l'uno dall'altro nell'archivio dei pacchetti (detto store). I pacchetti installati sono identificati da un hash crittografico di tutti gli input utilizzati per la loro compilazione. La modifica delle istruzioni di compilazione di un pacchetto ne modifica l'hash e ciò comporterà l'installazione di un pacchetto diverso nell'archivio pacchetti. Questa soluzione viene utilizzata anche per gestire i file di configurazione, assicurando così che le configurazioni più recenti non sovrascrivano quelle più vecchie. NixOS non segue lo standard FHS per le cartelle principali nel file system. Le uniche eccezioni sono il collegamento simbolico /bin/sh creato alla versione di bash nello store Nix (ad esempio Note
Altri progetti
Collegamenti esterni
|