Ricerca nel sito web

Nix: il gestore di pacchetti puramente funzionale per Linux


Nix è un sistema di gestione dei pacchetti potente e puramente funzionale progettato per una gestione dei pacchetti affidabile e riproducibile, rilasciato secondo i termini della GNU LGPLv2.1. È il principale sistema di gestione dei pacchetti in NixOS, una distribuzione Linux meno conosciuta.

Nix offre aggiornamenti e rollback atomici, versioni multiple di installazione dei pacchetti, gestione dei pacchetti multiutente e configurazione semplice degli ambienti di compilazione per un pacchetto, indipendentemente dai linguaggi di programmazione e dagli strumenti utilizzati dallo sviluppatore.

Sotto Nix, i pacchetti sono costruiti da un linguaggio di pacchetto funzionale chiamato "Nix espressioni". Questo approccio funzionale alla gestione dei pacchetti garantisce che l'installazione o l'aggiornamento di un pacchetto non possa danneggiare altri pacchetti.

Nix ha anche il supporto multiutente, il che implica che gli utenti normali (o non privilegiati) del sistema possono installare i pacchetti in modo sicuro e ogni utente è identificato da un profilo (una raccolta di pacchetti nello store Nix che appaiono nel PATH dell'utente).

Nel caso in cui un utente abbia installato un pacchetto, se un altro utente tenta di installare lo stesso pacchetto, il pacchetto non verrà creato o scaricato una seconda volta.

Attualmente supporta Linux (i686, x86_64) e Mac OS X (x86_64). Tuttavia, è abbastanza portabile, puoi provarlo sulla maggior parte delle piattaforme che supportano i thread POSIX e dispongono di un compilatore C++11.

In questo articolo mostreremo come installare (in modalità multiutente) e utilizzare il gestore pacchetti Nix in Linux. Discuteremo alcune delle attività di gestione dei pacchetti di base in relazione agli strumenti comunemente utilizzati.

Come installare Nix Package Manager su Linux

Installeremo l'ultima versione di Nix (v2.1.3 al momento in cui scriviamo) in modalità multiutente. Fortunatamente, esiste uno script di installazione già pronto che puoi eseguire dalla tua shell come un normale utente utilizzando il seguente comando curl sul tuo sistema.

sh <(curl https://nixos.org/nix/install) --daemon

L'esecuzione del comando precedente scaricherà l'ultimo tarball binario nix e ti ritroverai nella schermata di installazione multiutente di nix come mostrato nello screenshot.

Per visualizzare un elenco dettagliato di ciò che accadrà durante il processo di installazione, digita y e premi Invio. Se sei soddisfatto e pronto per continuare, digita y e premi Invio.

Lo script invocherà il comando sudo molte volte secondo necessità. Devi consentirgli di utilizzare sudo rispondendo y e premendo Invio.

Il programma di installazione eseguirà quindi alcuni test e genererà un report di configurazione Nix, creerà utenti di build compresi tra gli ID utente 30001 e 30032 e un gruppo con l'ID gruppo 30000. Inserisci y per continuare quando richiesto. Imposterà i gruppi di build per i diversi utenti di build, creerà la struttura di directory di base di Nix.

Modificherà il file /etc/bashrc, (e /etc/zshrc per zsh) se esistono. Tieni presente che prima esegue il backup dei file menzionati con un'estensione .backup-before-nix e il programma di installazione crea anche il file /etc/profile.d/nix.sh.

L'installatore configurerà anche il servizio nix-daemon e il servizio socket nix-daemon, caricherà l'unità systemd per nix-daemon e avvierà i due servizi sopra menzionati.

Una volta completata l'installazione, è necessario aprire una nuova finestra di terminale per iniziare a utilizzare Nix. In alternativa, chiudi e riapri la shell per applicare le modifiche recenti. Quindi procurati il file /etc/profile.d/nix.sh (poiché non è un file di avvio della shell, l'apertura di una nuova shell non lo genererà).

source /etc/profile.d/nix.sh

Successivamente, esegui il seguente comando per scaricare alcuni percorsi dal sito web ufficiale del progetto, necessari per il funzionamento di Nix. Dopo che tutti i percorsi sono stati scaricati e copiati nelle posizioni corrette, verrà visualizzato un riepilogo del tipo di installazione system e nix, come mostrato nello screenshot.

nix-shell -p nix-info --run "nix-info -m"

Come utilizzare Nix Package Manager in Linux

Sotto Nix, la gestione dei pacchetti viene eseguita dall'utilità nix-env. Viene utilizzato per installare, aggiornare e rimuovere/cancellare pacchetti e per interrogare quali pacchetti sono installati o sono disponibili per l'installazione.

Tutti i pacchetti si trovano in un canale Nix, che è un URL che punta a un repository che comprende sia una raccolta di espressioni Nix che un puntatore a una cache binaria.

Il canale predefinito è Nixpkgs e l'elenco dei canali sottoscritti è memorizzato in ~/.nix-channels, puoi elencarli utilizzando il seguente comando (nessun output significa nessun canale) .

nix-channel --list

Per aggiungere il canale Nix, utilizzare il seguente comando.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Prima di installare qualsiasi pacchetto, inizia aggiornando il canale Nix; questo è simile all'esecuzione di apt update nel gestore di pacchetti APT.

nix-channel --update

È possibile interrogare quali pacchetti sono disponibili per l'installazione utilizzando il comando seguente.

nix-env -qa

In questo esempio, installeremo il server Apache Tomcat utilizzando il comando precedente insieme a grep per scoprire che il pacchetto è disponibile per l'installazione, come mostrato.

nix-env -qa | grep "apache-tomcat"

Per installare un pacchetto, utilizza il comando seguente specificando la versione del pacchetto, ad esempio apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Sul sistema locale, Nix memorizza i pacchetti nel Nix store, che per impostazione predefinita è la directory /nix/store, dove ogni pacchetto ha la propria sottodirectory univoca. Ad esempio, i pacchetti apache-tomcat sono archiviati in:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

In questo percorso, i caratteri casuali 95gmgnxlrcpkhlm00fa5ax8kvd6189py sono un identificatore univoco per il pacchetto che tiene conto di tutte le sue dipendenze.

Puoi elencare i pacchetti installati con il seguente comando.

nix-env -q

Per aggiornare il pacchetto apache-tomcat, puoi utilizzare l'opzione di aggiornamento -u come mostrato.

nix-env -u apache-tomcat

Se vuoi rimuovere/cancellare apache-tomcat, usa il flag -e. In questo caso un pacchetto non viene cancellato immediatamente dal sistema, ma viene solo reso inutilizzato. Questo è utile perché vuoi eseguire un rollback o potrebbe trovarsi nei profili di altri utenti.

nix-env -e apache-tomcat

Dopo aver rimosso un pacchetto, puoi eseguire la garbage collection con l'utilità nix-collect-garbage.

nix-collect-garbage

Come rimuovere Nix Package Manager in Linux

Per disinstallare Nix, rimuovi tutti i file relativi a Nix in una volta sola.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Sui sistemi con systemd, esegui i seguenti comandi per interrompere tutti i servizi relativi a nix e disabilitarli.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Inoltre, devi rimuovere qualsiasi riferimento a Nix in questi file: /etc/profile, /etc/bashrc e /etc/zshrc .

Per ulteriori informazioni, vedere le pagine man delle utilità di cui sopra che abbiamo esaminato.

man nix-channel
man nix-env

Puoi trovare la documentazione di Nix Package Manager nel sito web del progetto: https://nixos.org/nix/.

Riepilogo

Nix è un gestore di pacchetti puramente funzionale progettato per una gestione dei pacchetti affidabile e riproducibile. Fornisce un concetto interessante di gestione dei pacchetti, molto diverso dagli strumenti comunemente utilizzati in Linux come YUM, APT e molti altri.

In questo articolo, abbiamo mostrato come installare nix in modalità multiutente e discusso come gestire i pacchetti con Nix. Condividi i tuoi pensieri con noi o fai qualsiasi domanda tramite il modulo di commento qui sotto. Infine, in un prossimo articolo, spiegheremo ulteriori comandi di gestione dei pacchetti Nix. Fino ad allora, resta connesso.