GNU/Linux >> Linux Esercitazione >  >> Linux

Iniziare con Nix Package Manager

Questo tutorial spiega come eseguire operazioni di gestione dei pacchetti come l'installazione, la rimozione, l'aggiornamento e l'aggiornamento di pacchetti utilizzando il gestore di pacchetti Nix. Se non hai ancora installato il gestore di pacchetti Nix, consulta la nostra guida precedente "Nix:un potente gestore di pacchetti per Linux e Unix" . Come forse già saprai, non è necessario essere un utente root o sudo per eseguire tutte le operazioni di gestione dei pacchetti utilizzando Nix.

Introduzione a Nix Package Manager

Nix ha molti comandi. Il comando principale per la gestione dei pacchetti è nix-env . Questo comando viene utilizzato per elencare, installare, aggiornare, ripristinare, rimuovere, interrogare i pacchetti. Vediamo alcuni comandi con esempi.

Aggiornamento dei canali Nix

Un canale Nix è solo un URL che punta a un luogo che contiene un insieme di espressioni Nix e un manifest. Per impostazione predefinita, Nixpkgs il canale viene aggiunto automaticamente al tuo elenco di canali "iscritti" quando installi Nix.

Per rimanere aggiornato con il canale Nix, esegui il seguente comando:

$ nix-channel --update

Risultato di esempio:

downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’...
downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s]
unpacking channels...

Puoi anche aggiungere manualmente un canale al tuo sistema come mostrato di seguito.

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

Dopo esserti iscritto(aggiunto) un canale, non dimenticare di aggiornare il canale per ottenere le ultime espressioni Nix disponibili usando il comando:

$ nix-channel --update

Per rimuovere un canale, esegui:

$ nix-channel --remove nixpkgs

Cerca/interroga i pacchetti disponibili

Per visualizzare l'elenco dei pacchetti disponibili nel canale a cui sei iscritto, esegui:

$ nix-env -qa

L'output di esempio del comando precedente sarebbe:

2048-in-terminal-2015-01-15
2bwm-0.2
389-ds-base-1.3.5.15
3dpong-0.5
4store-1.1.6
8086tiny-1.25
90secondportraits-1.01b
915resolution-0.5.3
9pfs
a2jmidid-8
a2ps-4.14
a52dec-0.7.4p4
aacgain-1.9.0
aacskeys-0.4.0e
aalib-1.4rc5
abc-verifier-20160818
abcde-2.7.2
abcl-1.4.0

[...]

Qui, "-q" indica l'operazione di query. "-a" indica tutti i pacchetti disponibili (ovvero installabili).

Puoi interrogare un particolare pacchetto, come mostrato di seguito.

$ nix-env -qa chromium

Risultato:

chromium-58.0.3029.110

Inoltre, puoi utilizzare il comando seguente per cercare un pacchetto particolare.

$ nix-env -qaP | grep python3-3

Risultato di esempio:

nixpkgs.python33 python3-3.3.6
nixpkgs.python33Full python3-3.3.6
nixpkgs.python34 python3-3.4.6
nixpkgs.python34Full python3-3.4.6
nixpkgs.python35 python3-3.5.3
nixpkgs.python35Full python3-3.5.3
nixpkgs.python3Full python3-3.6.1
nixpkgs.python36Full python3-3.6.1
nixpkgs.python3 python3-3.6.1

Per elencare tutti i pacchetti installati, esegui semplicemente:

$ nix-env -q

È inoltre possibile visualizzare lo stato del pacchetto disponibile. Guarda l'esempio qui sotto.

$ nix-env -qas gcc

Risultato di esempio:

IPS gcc-5.4.0

Qui, "I" indica che il pacchetto specificato è installato, "P" indica che il pacchetto è presente nel nostro sistema e "S" indica che se esiste un cosiddetto sostituto per il pacchetto.

Puoi interrogare/elencare i pacchetti usando le espressioni regolari. Ecco alcuni esempi di espressioni regolari.

cromo

Corrisponde al nome del pacchetto chromium ea qualsiasi versione.

cromo-58.0

Corrisponde al nome del pacchetto chromium e alla versione 58.0.

Esempio:

$ nix-env -qa chromium-58.0

gtk\\+

Corrisponde al nome del pacchetto gtk+ . Il carattere + deve essere sottoposto a escape utilizzando una barra rovesciata per evitare che venga interpretato come un quantificatore e la barra rovesciata deve essere sottoposta a escape a sua volta con un'altra barra rovesciata per garantire che la shell lo trasmetta.

.\*

Corrisponde a qualsiasi nome di pacchetto. Questa è l'impostazione predefinita per la maggior parte dei comandi.

'.*zip.*'

Corrisponde a qualsiasi nome di pacchetto contenente la stringa zip . Nota i punti:'*zip*' non funziona, perché in un'espressione regolare, il carattere * viene interpretato come un quantificatore.

'.*(firefox|cromo).*'

Corrisponde a qualsiasi nome di pacchetto contenente le stringhe firefox o cromo .

Installazione dei pacchetti

Come accennato nel tutorial precedente, tutti i pacchetti verranno archiviati in Nix Store , di solito la directory /nix/store .

Per installare un pacchetto, esegui:

$ nix-env --install gcc

Oppure,

$ nix-env -i gcc

Il comando precedente installerà l'ultimo pacchetto gcc disponibile.

L'output di esempio del comando precedente sarebbe:

installing ‘gcc-5.4.0’
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds...
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds...
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds...
these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked):
 /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin
 /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0
 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11
 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25
 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man
 /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10
 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev
 /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib
 /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info
fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’...

[...]

fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...

*** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...
 % Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k

building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’
created 78 symlinks in user environment

Verifichiamo se gcc è installato o non utilizza il comando:

$ gcc -v

Risultato di esempio:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: 
Thread model: posix
gcc version 5.4.0 (GCC)

Come hai notato nell'output sopra, gcc si trova in una sottodirectory denominata "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0" in /nix/store . Qui, chiamiamo dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 come identificatore univoco. Questa sottodirectory contiene tutte le dipendenze e le librerie richieste del pacchetto gcc.

Prova i pacchetti senza installare

Un'altra caratteristica degna di nota del gestore di pacchetti Nix è che puoi testare un pacchetto senza installarlo sul tuo sistema. Fare riferimento alla seguente guida per sapere come testare un pacchetto senza installarlo.

  • Come testare un pacchetto senza installarlo in Linux

Aggiornamento dei pacchetti

Per aggiornare un pacchetto alla successiva versione disponibile, esegui:

$ nix-env --upgrade vim

Oppure, semplicemente:

$ nix-env -u vim

Il comando precedente aggiornerà solo vim pacchetto se esiste una versione "più recente".

Inoltre, puoi aggiornare tutti i pacchetti installati contemporaneamente eseguendo il comando seguente:

$ nix-env -u

Pacchetti di ripristino

Hai installato un pacchetto, ma non è utile o non funziona correttamente. È necessaria la versione inferiore dello stesso pacchetto. Cosa farai? Semplice. Torna alla versione di lavoro precedente usando il seguente comando:

$ nix-env --rollback

Disinstallazione dei pacchetti

Per disinstallare un pacchetto, esegui:

$ nix-env -e gcc

Il comando precedente disinstallerà il pacchetto chiamato gcc dal tuo sistema.

Puoi rimuovere più pacchetti come mostrato di seguito.

$ nix-env -e gcc vim

Risultato di esempio:

uninstalling ‘vim-8.0.0442’
uninstalling ‘gcc-5.4.0’
building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’
created 6 symlinks in user environment

Rimozione dei pacchetti inutilizzati

Quando un pacchetto viene disinstallato, non viene rimosso da Nix Store (ad esempio /nix/store/ directory). Solo, i collegamenti simbolici verranno rimossi dal tuo profilo.

Per rimuovere effettivamente i pacchetti disinstallati, esegui:

$ nix-collect-garbage -d

Risultato di esempio:

finding garbage collector roots...
deleting garbage...
deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’
deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’
deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’

[...]

deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’
deleting ‘/nix/store/trash’
deleting unused links...
note: currently hard linking saves -0.00 MiB
1447 store paths deleted, 12.65 MiB freed

Dovresti eseguire questo comando periodicamente per eliminare i pacchetti inutilizzati dal tuo sistema.

E per ora è tutto. Spero che tu abbia un'idea dell'utilizzo di base del gestore di pacchetti Nix. Quello che ho appena trattato qui è sufficiente per iniziare con il gestore di pacchetti Nix. Naturalmente, ci sono molti comandi. Per ulteriori informazioni sui comandi Nix, fare riferimento al manuale ufficiale Nix fornito alla fine di questa guida.

Se trovi utile questa guida, condividila sui tuoi social network professionali e supporta OSTechNix. Altre cose buone in arrivo. Resta sintonizzato!

Saluti!


Linux
  1. Iniziare con Zsh

  2. Introduzione a Plesk File Manager

  3. Iniziare con ls

  4. Iniziare con Samba per l'interoperabilità

  5. Procedura:per iniziare con Ansible

Iniziare con GIT su Linux

Introduzione al sistema operativo Linux

Guida introduttiva a GitHub

Iniziare con systemctl

Guida introduttiva agli esempi di comandi di Alpine Linux Apk

Guida introduttiva al comando Tar