Mac tiene varios administradores de paquetes de terceros para instalar software adicional. A continuación se explica cómo utilizar el administrador de paquetes de Nix con macOS.
¿Qué es Nix?
Nix es un administrador de paquetes que proporciona entornos de desarrollo basados en contenedores en todas las plataformas. Al igual que los sistemas de contenedores como Docker y Kubernetes, Nix le permite instalar entornos de desarrollo configurados en máquinas y redes con menos configuración y problemas.
Tradicionalmente en Mac, los usuarios usaban MacPorts o cerveza casera para instalar paquetes de terceros. Ambos sistemas tienen ventajas e inconvenientes.
Homebrew ha sido popular en la comunidad Mac debido a su facilidad de uso e instalación: los paquetes se pueden instalar desde la aplicación Terminal en macOS con solo unos pocos comandos, y las actualizaciones son automáticas e igual de fáciles.
Sin embargo, tanto Homebrew como MacPorts carecen de portabilidad entre máquinas. Puede escribir scripts de Terminal (shell) para instalar paquetes Homebrew o MacPorts en todos los sistemas, pero el mantenimiento de los scripts puede volverse complejo y, a menudo, es difícil escribir scripts que tengan en cuenta todas las configuraciones posibles de la máquina.
Nix resuelve esto colocando entornos de desarrollo en contenedores y haciéndolos más portátiles entre sistemas.
El costo de compensación que paga con Nix es una configuración un poco más compleja y una curva de aprendizaje más pronunciada.
Ecosistema nada
NixOS de la Fundación NixOS es en realidad varias cosas: es una distribución de Linux que utiliza el administrador de paquetes Nix. Nixpkgs es una colección de más de 80.000 paquetes que se pueden instalar utilizando el administrador de paquetes de Nix.
Hay tres manuales separados para Nix: el Manual de Nix, el Manual de Nixpkgs y el Manual de NixOS.
También hay un manual de referencia de Nix.
Una comunidad no oficial mantenida Wiki NixOS está disponible y un sitio de desarrollo de Nix está ubicado en nix.dev. NixOS Wiki tiene información sobre el administrador de paquetes, el lenguaje Nix, Nixpkgs y el propio NixOS.
También existe un lenguaje Nix que puede utilizar para crear y copiar partes de paquetes para nuevas instalaciones.
Probablemente querrás leer el Manual de Nix completo al menos antes de comenzar a instalar y usar Nix.
Definiciones
Hay algunos términos nuevos que deberá comprender para utilizar Nix.
Nix se basa en programación declarativa – crear programas basados en describir lo que se supone que debe hacer un software en lugar de cómo hacerlo. En pocas palabras, la programación declarativa intenta evitar el software basado en el estado y el cambio de estado para lograr algún resultado.
Expresiones. Nada expresiones Son básicamente subcomponentes de software instalable que están predefinidos para su posterior recuperación e instalación. La idea con las expresiones es que el componente ya está definido para que cuando se instale, funcione de la misma manera en todos los sistemas.
Cada expresión también tiene una ruta de búsqueda.
Canales. Una nada canal es una ruta específica a una o más expresiones Nix predefinidas que se pueden recuperar e instalar de forma remota. Hay una lista de canales oficiales enchannels.nixos.org.
La mayoría de los canales tienen versiones. También se puede suscribir o cancelar la suscripción a un canal.
Cada canal tiene contenido descargable que se instala cuando se instala el canal.
Almacenar. A diferencia de Homebrew y UNIX, Nix no instala paquetes en los directorios estándar de UNIX como /usr, /bin, /sbin u /opt.
En cambio, crea su propia almacenar – un directorio y un volumen especiales utilizados para almacenar todos los paquetes instalados. Al utilizar una tienda, los paquetes Nix son mucho más portátiles porque toda la tienda se puede mover como una unidad.
Nix instala un archivo de configuración en /etc/nixos/configuration.nix
que normalmente es invisible a menos que actives la función de archivos ocultos de macOS Finder.
copos son una característica experimental de Nix que son archivos utilizados para definir y controlar las dependencias entre paquetes. Aunque son populares, los Nix flakes todavía son experimentales y carecen de documentación sólida, así que utilícelos bajo su propia responsabilidad.
Recolección de basura. Como en algunos entornos de programación, cuando eliminas un paquete Nix, en realidad no se desinstala de inmediato. Para hacer eso ejecutas el Nix Recolector de basura.
Piense en un recolector de basura como un proceso que se ejecuta silenciosamente en segundo plano y que limpia los componentes no utilizados o obsoletos que ya no son necesarios.
Muchos sistemas modernos utilizan recolectores de basura, incluidos Java VM y los tiempos de ejecución Swift y Objective-C de Apple.
Puede invocar el recolector de basura de Nix en cualquier momento después de la instalación en la Terminal con:
La instalación de Nix incluye varias herramientas de línea de comandos (CLI) que puede ejecutar desde la aplicación Terminal. Éstas incluyen:
nix-env
– utilizado para manipular entornos de usuario de Nixnix-build
– utilizado para construir expresiones Nixnix-shell
– un entorno de comando interactivo basado en una expresión Nixnix-store
– manipular o consultar la tienda Nix
Todos estos comandos y más se detallan en el Manual de Nix.
Un entorno de usuario de Nix es simplemente un conjunto de software y herramientas instalados por Nix.
Instalación de Nix
Nix normalmente se instala en /nix
pero desde macOS Catalina, la raíz del disco de inicio de macOS es de solo lectura.
En cambio, en los sistemas posteriores a Catalina, Nix creará un nuevo volumen para contener la tienda Nix y lo montará como un volumen en la carpeta oculta de macOS. Volumes
en la raíz del disco de inicio.
Si tiene acceso de administrador, el instalador le solicitará el permiso sudo (superusuario) cuando lo ejecute para crear el nuevo volumen.
Para ejecutar el instalador interactivo de Nix en Terminal, escriba:
rizo -L https://nixos.org/nix/install | sh
Cuando se ejecuta el instalador, le muestra un breve mensaje sobre lo que está a punto de hacer y dónde se instalarán las cosas. También crea un nuevo usuario UNIX y un UUID para el usuario, que se utilizan durante la compilación de paquetes y contenedores Nix.
El instalador de Nix almacena una referencia al volumen de la tienda Nix en /etc/fstab
.
Tenga en cuenta que el volumen de la tienda Nix se monta, pero no en el escritorio del Finder; no lo verá en el escritorio de su Mac, pero de todos modos seguirá allí.
En cambio, Nix lo monta en la raíz de su disco de inicio en un directorio llamado «Tienda Nix». Dentro de este directorio, hay un almacenar y un era carpeta.
El almacenar La carpeta contiene todos los paquetes y canales NIX descargados e instalados, el era La carpeta contiene una carpeta de registro y la nada carpeta que contiene la base de datos, los perfiles, una conexión al demonio en segundo plano, los grupos de usuarios y otras partes.
fstab
es el archivo de la tabla del sistema de archivos que le indica a UNIX dónde se encuentran todos los sistemas de archivos y sus volúmenes.
Cuando esté listo para continuar con el instalador, ingrese una contraseña de administrador en la Terminal y presione Devolver.
Verá que se ejecuta el instalador de Nix y, mientras lo hace, describirá lo que está creando.
Si el Nix instalado tiene acceso sudo, también intentará agregar algunas opciones de configuración a los archivos de perfil de usuario ocultos en el disco de inicio de su Mac en el usuario y etc
carpetas, a saber:
/etc/bashrc /etc/profile.d/nix.sh /etc/zshrc /etc/bash.bashrc /etc/zsh/zshrc
macOS carga estos archivos de perfil cuando inicia sesión y contienen variables de entorno y rutas al software instalado.
Finalmente, el instalador de Nix configura un proceso en segundo plano, o demonio llamado nix-daemon
que gestiona la tienda Nix en segundo plano de forma silenciosa.
Una vez que finalice el instalador, deberá salir de Terminal y volver a abrirlo, o bien abrir un nuevo shell de Terminal para que Terminal cargue todas las nuevas configuraciones de Nix.
Una vez que finalice el instalador, puede inicializar los paquetes predeterminados de Nix y probar la instalación de Nix en la Terminal con:
nix-shell -p nix-info --run "nix-info -m"
Debería ver un mensaje sobre cómo obtener rutas y luego una lista de todos los paquetes instalados en la tienda local de Nix.
En la parte inferior del mensaje, debería ver el número de versión actual de Nix y Darwin, el nombre del canal y la ruta al archivo de perfil del paquete.
También puede instalar manualmente cualquier paquete Nix existente en la Terminal utilizando el nix-env --install
comando seguido del nombre del paquete. Por ejemplo:
nix-env --install firefox
La desinstalación del paquete es la misma, excepto que utiliza el --uninstall
bandera a la nix-env
dominio
Recursos adicionales
Hay varios buenos sitios Nix de terceros disponibles; asegúrese de visitarlos.
De cero a nada.com es una guía para usar Nix e incluye un Inicio rápido y una sección de Conceptos que brinda una buena descripción general de cada parte de Nix y cómo encajan.
Sistemas.determinados es un sitio centrado en Nix que contiene muchos tutoriales de Nix, así como un instalador de Nix independiente en caso de que no desee utilizar la instalación basada en Terminal.
El Libro Nix y Flakes de Ryan Yin es un tutorial en línea y un repositorio de GitHub para principiantes lleno de información útil relacionada con Nix.
El repositorio nix-darwin contiene todos los módulos, paquetes y documentación para el puerto Darwin (macOS) del administrador de paquetes Nix.
Nixpacks es una utilidad que puede tomar cualquier directorio de archivos y contenerlo para su reutilización.
Nix pros y contras
Una vez superada la curva de aprendizaje, Nix puede resultar bastante eficaz y útil. La capacidad de configurar y reinstalar contenedores portátiles en todos los sistemas es muy poderosa.
Puede configurar cualquier conjunto de entornos y herramientas y luego empaquetarlo para volver a implementarlo en la mayoría de los sistemas.
La capacidad de crear sus propios paquetes y contenedores Nix personalizados que luego pueden reutilizarse le ahorra mucho tiempo cada vez que necesita configurar una nueva máquina.
La principal desventaja de Nix como administrador de paquetes es su mayor complejidad y su curva de aprendizaje. Actualmente tampoco existe una versión para Windows.
Homebrew es aún más simple que Nix, pero excepto por escribir sus propios scripts de shell personalizados para la instalación, Homebrew carece de portabilidad. Intentar escribir scripts de shell de instalación personalizados para cada sistema posible no es práctico.
Una vez que aprenda y domine Nix, se convertirá en una poderosa herramienta en su arsenal de desarrollo.