Nix - El Administrador de paquetes puramente funcional para Linux


Nix es un sistema de administración de paquetes potente y puramente funcional diseñado para una administración de paquetes confiable y reproducible, lanzado bajo los términos de GNU LGPLv2.1. Es el sistema de administración de paquetes primario en NixOS , una distribución de Linux menos conocida.

Nix ofrece actualizaciones atómicas y reversiones, múltiples versiones de la instalación de paquetes, administración de paquetes multiusuario y configuración sin esfuerzo de entornos de compilación para un paquete, sin importar qué lenguajes de programación y herramientas esté usando un desarrollador.

Bajo Nix , los paquetes se crean a partir de un lenguaje de paquete funcional llamado " expresiones de Nix ". Este enfoque funcional de la administración de paquetes garantiza que la instalación o actualización de un paquete no puede romper otros paquetes.

Nix también tiene soporte multiusuario, lo que implica que los usuarios normales (o no privilegiados) del sistema pueden instalar paquetes de manera segura y cada usuario se identifica mediante un perfil (una colección de paquetes en la tienda de Nix que aparece en la RUTA del usuario).

En caso de que un usuario haya instalado un paquete, si otro usuario intenta instalar el mismo paquete, el paquete no se creará ni descargará una segunda vez.

Actualmente es compatible con Linux (i686, x86_64) y Mac OS X (x86_64). Sin embargo, es bastante portátil, puede probarlo en la mayoría de las plataformas que admiten subprocesos POSIX y tienen un compilador C ++ 11.

En este artículo, mostraremos cómo instalar (en modo multiusuario) y usar el administrador de paquetes Nix en Linux. Discutiremos algunas de las tareas básicas de administración de paquetes en relación con las herramientas de uso común.

Cómo instalar Nix Package Manager en Linux

Instalaremos la última versión de Nix ( v2.1.3 en el momento de la escritura) en modo multiusuario. Afortunadamente, hay una secuencia de comandos de instalación preparada que puede ejecutar desde su shell como un usuario normal usando el siguiente comando curl en su sistema.

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

Al ejecutar el comando anterior, se descargará el último archivo tarball binario de nix, y aterrizará en la pantalla de instalación de multi-user nix como se muestra en la captura de pantalla.

Para ver una lista detallada de lo que sucederá durante el proceso de instalación, escriba y y presione Enter . Si está satisfecho y listo para continuar, escriba y y presione Enter .

El script invocará el comando sudo tantas veces como sea necesario. Debe permitir que use sudo respondiendo a y y presionando Enter .

El instalador ejecutará algunas pruebas y generará un informe de configuración de Nix, creará usuarios de compilación entre las ID de usuario 30001 y 30032 , y un grupo con la ID de grupo 30000 . Ingrese y para continuar cuando se le solicite. Configurará los grupos de compilación para los diferentes usuarios de compilación, conformando la estructura básica de directorios de Nix.

Modificará el archivo /etc/bashrc , (y /etc/zshrc para el zsh ) si existen. Tenga en cuenta que primero hace una copia de seguridad de los archivos mencionados con una extensión .backup-before-nix y el instalador también crea el archivo /etc/profile.d/nix.sh .

El instalador también configurará el servicio nix-daemon y el servicio de socket nix-daemon, cargará la unidad systemd para nix-daemon e iniciará los dos servicios mencionados anteriormente.

Una vez que se complete la instalación, debe abrir una nueva ventana de terminal para comenzar a usar Nix. Alternativamente, cierre y vuelva a abrir su shell para aplicar los cambios recientes. Luego, busque el archivo /etc/profile.d/nix.sh (debido a que no es un archivo de inicio de shell, abrir un nuevo shell no será su origen).

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

A continuación, ejecute el siguiente comando para descargar algunas rutas desde el sitio web oficial del proyecto, necesario para que Nix funcione. Después de descargar todas las rutas y copiarlas en las ubicaciones correctas, verá un resumen del tipo de instalación del sistema y de nix como se muestra en la captura de pantalla.

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

Cómo usar Nix Package Manager en Linux

Bajo Nix , la administración de paquetes se realiza mediante la utilidad nix-env . Se utiliza para instalar, actualizar y eliminar/borrar paquetes, y para consultar qué paquetes están instalados o están disponibles para su instalación.

Todos los paquetes están ubicados en un canal Nix, que es una URL que apunta a un repositorio que comprende tanto una colección de expresiones Nix como un puntero a un caché binario.

El canal predeterminado es Nixpkgs y la lista de canales suscritos se almacenan en ~/.nix-channels , puede enumerarlos usando el siguiente comando (sin salida significa que no hay canales) .

$ nix-channel --list

Para agregar el canal Nix, use el siguiente comando.

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

Antes de instalar cualquier paquete, comience por actualizar el canal Nix; esto es similar a ejecutar actualización de apt bajo el administrador de paquetes APT.

$ nix-channel --update

Puede consultar qué paquetes están disponibles para la instalación con el siguiente comando.

$ nix-env -qa

En este ejemplo, instalaremos el servidor Apache Tomcat utilizando el comando anterior junto con grep para encontrar el paquete que está disponible para instalar, como se muestra.

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

Para instalar un paquete, use el siguiente comando especificando la versión del paquete, por ejemplo, apache-tomcat-9.0.2 .

$ nix-env -i apache-tomcat-9.0.2

En el sistema local, Nix almacena paquetes en Nix store , que es por defecto el directorio /nix/store , donde cada paquete tiene su propio subdirectorio. Por ejemplo, los paquetes apache-tomcat se almacenan en:

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

En esta ruta, los caracteres aleatorios 95gmgnxlrcpkhlm00fa5ax8kvd6189py es un identificador único para el paquete que tiene en cuenta todas sus dependencias.

Puede listar los paquetes instalados con el siguiente comando.

$ nix-env -q

Para actualizar el paquete apache-tomcat , puede usar el interruptor de actualización -u como se muestra.

$ nix-env -u apache-tomcat

Si desea eliminar/borrar apache-tomcat , use la marca -e . Aquí, un paquete no se borra del sistema inmediatamente, solo se procesa como no utilizado. Esto es útil porque desea hacer una reversión, o podría estar en los perfiles de otros usuarios.

$ nix-env -e apache-tomcat

Después de eliminar un paquete, puede hacer un poco de recolección de basura con la utilidad nix-collect-garbage .

$ nix-collect-garbage

Cómo eliminar Nix Package Manager en Linux

Para desinstalar Nix, elimine todos los archivos relacionados con nix de una sola vez.

$ 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 sistemas con systemd, ejecute los siguientes comandos para detener todos los servicios relacionados con nix y deshabilitarlos.

$ 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

Además, debe eliminar cualquier referencia a Nix en estos archivos: /etc/profile , /etc/bashrc y /etc/zshrc .

Para obtener más información, consulte las páginas de manual de las utilidades anteriores que hemos visto.

$ man nix-channel
$ man nix-env

Puede encontrar la documentación de Nix Package Manager en el sitio web del proyecto: https://nixos.org/nix/.

Nix es un administrador de paquetes puramente funcional diseñado para la administración confiable y reproducible de paquetes. Proporciona un concepto interesante de administración de paquetes, muy distinto de las herramientas utilizadas comúnmente en Linux como YUM, APT y muchas otras.

En este artículo, mostramos cómo instalar nix en modo multiusuario y discutimos cómo hacer la administración de paquetes con Nix. Comparta sus opiniones con nosotros o haga cualquier pregunta a través del formulario de comentarios a continuación. Por último, en un próximo artículo, explicaremos más comandos de administración de paquetes Nix. Hasta entonces, mantente conectado.