Nix: el gestor de paquets purament funcional per a Linux


Nix és un sistema de gestió de paquets potent i purament funcional dissenyat per a una gestió de paquets fiable i reproduïble, publicat sota els termes de la GNU LGPLv2.1. És el sistema de gestió de paquets principal de NixOS, una distribució Linux menys coneguda.

Nix ofereix actualitzacions i retrocessos atòmics, diverses versions d'instal·lació de paquets, gestió de paquets multiusuari i una configuració senzilla d'entorns de compilació per a un paquet, independentment dels llenguatges de programació i les eines que utilitzi un desenvolupador.

Sota Nix, els paquets es construeixen a partir d'un llenguatge de paquets funcional anomenat \expressions Nix. Aquest enfocament funcional de la gestió de paquets garanteix que la instal·lació o l'actualització d'un paquet no pot trencar altres paquets.

Nix també té suport multiusuari, la qual cosa implica que els usuaris del sistema normals (o no privilegiats) poden instal·lar paquets de manera segura i cada usuari està identificat per un perfil (una col·lecció de paquets a la botiga Nix que apareixen al PATH de l'usuari).

En cas que un usuari hagi instal·lat un paquet, si un altre usuari intenta instal·lar el mateix paquet, el paquet no es construirà ni es descarregarà una segona vegada.

Actualment és compatible amb Linux (i686, x86_64) i Mac OS X (x86_64). Tanmateix, és bastant portàtil, podeu provar-ho a la majoria de plataformes que admeten fils POSIX i tenen un compilador C++11.

En aquest article, mostrarem com instal·lar (en mode multiusuari) i utilitzar el gestor de paquets Nix a Linux. Parlarem d'algunes de les tasques bàsiques de gestió de paquets en relació amb les eines d'ús habitual.

Com instal·lar el gestor de paquets Nix a Linux

Instal·larem la darrera versió de Nix (v2.1.3 en el moment d'escriure) en mode multiusuari. Afortunadament, hi ha un script d'instal·lació preparat que podeu executar des del vostre intèrpret d'ordres com a usuari normal fent servir la següent comanda curl al vostre sistema.

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

L'execució de l'ordre anterior baixarà l'últim tarball binari de nix i arribareu a la pantalla d'instal·lació de nix multiusuari tal com es mostra a la captura de pantalla.

Per veure una llista detallada del que passarà durant el procés d'instal·lació, escriviu y i premeu Intro. Si esteu satisfet i preparat per continuar, escriviu y i premeu Intro.

L'script invocarà l'ordre sudo moltes vegades segons sigui necessari. Heu de permetre que utilitzi sudo responent y i prement Retorn.

Llavors, l'instal·lador executarà unes quantes proves i generarà un informe de configuració Nix, crearà usuaris de compilació entre els ID d'usuari 30001 i 30032 i un grup amb l'ID de grup 30000. Introduïu y per continuar quan se us demani. Configurarà els grups de compilació per als diferents usuaris de compilació, crearà l'estructura bàsica de directoris de Nix.

Modificarà el fitxer /etc/bashrc, (i /etc/zshrc per al zsh) si existeixen. Tingueu en compte que primer fa una còpia de seguretat dels fitxers esmentats amb una extensió .backup-before-nix i l'instal·lador també crea el fitxer /etc/profile.d/nix.sh.

L'instal·lador també configurarà el servei nix-daemon i el servei de socket nix-daemon, carregarà la unitat systemd per a nix-daemon i iniciarà els dos serveis esmentats anteriorment.

Un cop finalitzada la instal·lació, heu d'obrir una nova finestra de terminal per començar a utilitzar Nix. Alternativament, tanqueu i torneu a obrir el vostre shell per aplicar els canvis recents. A continuació, feu l'origen del fitxer /etc/profile.d/nix.sh (perquè no és un fitxer d'inici de l'intèrpret d'ordres, obrir un nou intèrpret d'ordres no l'obtendrà).

$ source /etc/profile.d/nix.sh

A continuació, executeu l'ordre següent per descarregar alguns camins del lloc web oficial del projecte, necessaris perquè Nix funcioni. Després de descarregar i copiar tots els camins a les ubicacions correctes, veureu un resum del tipus d'instal·lació del sistema i nix tal com es mostra a la captura de pantalla.

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

Com utilitzar el gestor de paquets Nix a Linux

A Nix, la gestió de paquets la fa la utilitat nix-env. S'utilitza per instal·lar, actualitzar i eliminar/esborrar paquets, i per consultar quins paquets estan instal·lats o disponibles per a la instal·lació.

Tots els paquets es troben en un canal Nix, que és un URL que apunta a un repositori que inclou tant una col·lecció d'expressions Nix com un punter a una memòria cau binària.

El canal predeterminat és Nixpkgs i la llista de canals subscrits s'emmagatzemen a ~/.nix-channels, podeu llistar-los amb l'ordre següent (sense sortida vol dir que no hi ha canals).

$ nix-channel --list

Per afegir el canal Nix, utilitzeu l'ordre següent.

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

Abans d'instal·lar qualsevol paquet, comenceu per actualitzar el canal Nix; això és similar a executar apt update amb el gestor de paquets APT.

$ nix-channel --update

Podeu consultar quins paquets estan disponibles per a la instal·lació mitjançant l'ordre següent.

$ nix-env -qa

En aquest exemple, instal·larem el grep per trobar que el paquet està disponible per instal·lar-lo tal com es mostra.

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

Per instal·lar un paquet, utilitzeu l'ordre següent especificant la versió del paquet, per exemple apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

Al sistema local, Nix emmagatzema paquets a la botiga Nix, que és per defecte el directori /nix/store, on cada paquet té el seu propi subdirectori únic. Per exemple, els paquets apache-tomcat s'emmagatzemen a:

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

En aquest camí, els caràcters aleatoris 95gmgnxlrcpkhlm00fa5ax8kvd6189py és un identificador únic per al paquet que té en compte totes les seves dependències.

Podeu llistar els paquets instal·lats amb l'ordre següent.

$ nix-env -q

Per actualitzar el paquet apache-tomcat, podeu utilitzar el commutador d'actualització -u tal com es mostra.

$ nix-env -u apache-tomcat

Si voleu eliminar/esborrar apache-tomcat, utilitzeu el senyalador -e. Aquí, un paquet no s'esborra immediatament del sistema, només es mostra sense utilitzar. Això és útil perquè voleu fer un rollback, o pot ser que estigui en els perfils d'altres usuaris.

$ nix-env -e apache-tomcat

Després d'eliminar un paquet, podeu fer una mica de recollida d'escombraries amb la utilitat nix-collect-garbage.

$ nix-collect-garbage

Com eliminar el gestor de paquets Nix a Linux

Per desinstal·lar Nix, elimineu tots els fitxers relacionats amb Nix d'una vegada.

$ 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

En sistemes amb systemd, executeu les ordres següents per aturar tots els serveis relacionats amb nix i desactivar-los.

$ 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

A més, heu d'eliminar qualsevol referència a Nix en aquests fitxers: /etc/profile, /etc/bashrc i /etc/zshrc.

Per obtenir més informació, consulteu les pàgines man de les utilitats anteriors que hem vist.

$ man nix-channel
$ man nix-env

Podeu trobar la documentació de Nix Package Manager al lloc web del projecte: https://nixos.org/nix/.

Nix és un gestor de paquets purament funcional dissenyat per a una gestió de paquets fiable i reproduïble. Proporciona un concepte interessant de gestió de paquets, molt diferent de les eines d'ús comú a Linux com APT i moltes altres.

En aquest article, vam mostrar com instal·lar nix en mode multiusuari i vam parlar de com gestionar paquets amb Nix. Comparteix els teus pensaments amb nosaltres o fes qualsevol pregunta mitjançant el formulari de comentaris a continuació. Finalment, en un article proper, explicarem més ordres de gestió de paquets Nix. Fins aleshores, manteniu-vos connectats.