Tutoriales

Utilice Nix-shell para establecer un entorno de desarrollo en Linux

¿Alguna vez ha tenido problemas con conflictos de versiones de software entre proyectos? caparazón de los knicks ¡poder ayudar! Nix-shell le permite Cree un entorno de desarrollo personalizado Para cada proyecto, se proporcionan todas las herramientas y bibliotecas necesarias.

Estos entornos están aislados, lo que significa que no interfieren con otros proyectos del sistema. Este enfoque mantiene el flujo de trabajo de desarrollo fluido y evita el dolor de cabeza del «infierno de dependencia» causado por los conflictos de software.

Nix-shell facilita la configuración de estos entornos y el cambio entre ellos, lo que garantiza configuraciones consistentes en todas las máquinas. Esto puede ahorrarle a usted y a su equipo mucho tiempo.

En esta guía, lo guiaremos a través de los siguientes pasos. Utilice nix-shell para establecer y gestionar un entorno de desarrollo aislado en linux.

¿Qué es nix-shell?

Mella Es un potente administrador de paquetes y sistema de compilación que proporciona un enfoque funcional y declarativo para gestionar las dependencias de software. Utiliza un enfoque puramente funcional, tratando los paquetes como valores en un lenguaje de programación funcional.

caparazón de los knickses una utilidad de línea de comandos incluida con el administrador de paquetes Nix que le permite configurar un entorno de desarrollo aislado basado en expresiones Nix. Estos entornos encapsulan todas las herramientas, bibliotecas y dependencias necesarias para un proyecto específico.

Al construir cada dependencia de forma independiente y evitar interferencias, nix-shell elimina el «infierno de dependencias» y proporciona un control preciso sobre las dependencias en los entornos de desarrollo y producción.

Este aislamiento y repetibilidad garantiza una configuración coherente entre diferentes sistemas y permite una colaboración fluida entre desarrolladores.

Ventajas de usar Nix-shell

  • aislamiento: cada nix-shell Los entornos están aislados de su sistema y de otros entornos, lo que evita conflictos entre dependencias.
  • Reproducibilidad: Los entornos se definen en código, lo que garantiza que sean reproducibles en cualquier sistema que ejecute Nix.
  • Actualizaciones y reversiones atómicas: El enfoque de Nix para la gestión de paquetes admite actualizaciones y reversiones atómicas, lo que permite probar diferentes dependencias de forma segura.
  • Probar paquetes sin instalarlos:Una de las características útiles de Nix Package Manager es que permite a los usuarios probar paquetes sin instalarlos localmente. Esto es útil cuando desea utilizar una aplicación específica temporalmente.

Cómo utilizar Nix-shell para establecer y gestionar un entorno de desarrollo

Como se mencionó anteriormente, nix-shell crea entornos separados y reproducibles para las dependencias del proyecto. Este aislamiento evita conflictos entre dependencias de diferentes proyectos.

A continuación se explica cómo utilizar nix-shell para configurar y gestionar un entorno de desarrollo.

Crear expresiones Nix

El primer paso es crear una expresión Nix para describir las dependencias requeridas por el proyecto.Esto generalmente se hace en un archivo llamado default.nix o shell.nix en el directorio raíz de su proyecto.

Creemos un proyecto de muestra llamado myproject.

$ mkdir myproject

cd entrar myproject Tabla de contenido:

$ cd myproject

Crea un sencillo shell.nix documento:

$ nano shell.nix

Agregue las siguientes líneas:

{ pkgs ? import  {} }:

pkgs.mkShell {
  buildInputs = [
   pkgs.python38
   pkgs.nodejs
   pkgs.ruby
  ];
}

Este archivo declara un entorno de desarrollo. Pitón 3.8, Nodo.js y rubí como dependencia.cuando corres nix-shell En el directorio que contiene este archivo, Nix descargará e instalará estos paquetes en un entorno aislado sin afectar los paquetes de todo el sistema.

También puedes especificar dependencias en una sola línea, así:

{ pkgs ? import  {} }:
pkgs.mkShell {
buildInputs = with pkgs.buildPackages; [ python38 nodejs ruby ];
}

Guarde el archivo y ciérrelo.

Ingrese al shell Nix

Una vez que tenga la expresión Nix, puede ingresar al entorno de aislamiento usando:

$ nix-shell

o,

$ nix-shell shell.nix

Para garantizar que las herramientas instaladas en el sistema no interfieran con sus dependencias definidas, utilice --pure Opciones y nix-shell.

$ nix-shell --pure shell.nix

Esto establecerá una nueva sesión de shell con las dependencias especificadas disponibles (Python 3.8, Node.js y Ruby). Cualquier comando que ejecute en este shell puede acceder al entorno de aislamiento.

Desarrollar usando Nix-shell

En un entorno nix-shell, puede ejecutar herramientas de desarrollo, scripts y comandos como de costumbre.

Un entorno aislado garantiza que las dependencias de un proyecto estén disponibles y sean consistentes independientemente de la configuración del sistema host.

Puedes verificarlo comprobando la versión de dependencia:

[nix-shell:~/myproject]$ python -V
Python 3.8.19
[nix-shell:~/myproject]$ node -v
v18.19.1
[nix-shell:~/myproject]$ ruby -v
ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
Utilice Nix-shell para establecer y gestionar el entorno de desarrollo

Como puede ver en el resultado anterior, el entorno de desarrollo está listo. Pitón 3.8.19, Nodo 18.19.1 y Rubí 3.1.4 Instalar. Ahora puede comenzar a crear y probar su aplicación.

Salir de Nix-shell

Para salir de nix-shell, simplemente escriba:

$ exit

O puedes presionar CTRL+D Sal del caparazón.

cuando sales nix-shell ambiente ocurre lo siguiente:

  1. Termina el aislamiento ambiental: Entorno de desarrollo aislado establecido nix-shell Es temporal y existe sólo durante la sesión del shell.una vez que cierres la sesión nix-shellse eliminará el aislamiento proporcionado por ese entorno y su shell volverá a su estado anterior.
  2. Paquetes y dependencias desinstaladas.: Todos los paquetes, dependencias y variables de entorno que están cargados y disponibles en nix-shell El entorno se ha desinstalado y ya no se puede acceder a él desde el shell. Cualquier comando o herramienta que dependa de estos paquetes ya no funcionará a menos que se instale en todo el sistema o en otro entorno.
  3. Recuperación del entorno Shell: El entorno del shell, incluida la RUTA, las variables de entorno y otras configuraciones, se restaura al estado anterior a la entrada. nix-shell.Cualquier cambio en esta configuración nix-shell Está revocado.
  4. no hay cambios en curso: Por defecto, nix-shell No se realizarán cambios permanentes en su sistema.Aislamiento interno y cambio. nix-shell El entorno es temporal y no afecta la configuración de todo el sistema ni los paquetes instalados.
  5. Estado del proyecto: cualquier archivo o cambio que realice en nix-shell entorno, como la creación o modificación de archivos en el directorio del proyecto, persistirá incluso después de salir nix-shell. Sólo el entorno en sí es temporal, los archivos en los que trabaja no lo son.
  6. recolección de basura: Con el tiempo, a medida que utilice más paquetes y posiblemente los actualice, la tienda Nix puede crecer en tamaño porque conserva versiones anteriores de los paquetes. Estos paquetes y entornos seguirán siendo accesibles hasta que se realice la recolección de basura de Nix.abandonar nix-shell La recolección de basura no se activa automáticamente. Puede iniciar manualmente la recolección de basura para eliminar los paquetes no utilizados del almacenamiento de Nix, liberando así espacio en el disco.Por favor consulte nuestro Comience con los Knicks Obtenga una guía sobre cómo limpiar el kit no utilizado.

Para resumir, salir nix-shell Lo separa limpiamente del entorno de desarrollo temporal que proporciona sin afectar el entorno global del sistema ni eliminar ningún dato del proyecto. Los paquetes de software usados ​​se conservan en la tienda de Nix para una reutilización eficiente, lo que garantiza que su sistema permanezca limpio y que su entorno de desarrollo sea repetible y aislado.

Si necesita volver a utilizar el mismo entorno de desarrollo, simplemente vuelva a ingresar nix-shell mediante la ejecución nix-shell comando desde el mismo directorio que contiene su shell.nix documento. Esto restablecerá el entorno aislado con las dependencias especificadas.

preguntas frecuentes

La siguiente es una lista de preguntas frecuentes (FAQ) y respuestas sobre Nix.

P: ¿Qué es nix-shell?

A: nix-shell Es una herramienta de línea de comandos proporcionada por el administrador de paquetes Nix, que se utiliza para crear un entorno de shell temporal donde se instalan paquetes de software específicos. Está diseñado para proporcionar un entorno aislado para desarrollo o pruebas sin afectar al resto del sistema.

P: ¿Cómo instalar? nix-shell?

A: nix-shell Parte del administrador de paquetes de Nix.usar nix-shell, primero debes instalar Nix en tu sistema. Puede consultar Instalar Nix Nuestra guía de instalación de Nix.

P: ¿Cómo uso nix-shell ¿Crear un ambiente aislado?

Respuesta: Para establecer un entorno aislado, puede utilizar shell.nix Los archivos en el directorio del proyecto especifican las dependencias requeridas.correr nix-shell en el directorio que lo contiene shell.nix lo colocará en un shell con las dependencias disponibles.Alternativamente, para un entorno de ensayo puede utilizar nix-shell -p package1 package2 ... Especifique el paquete directamente.

P: ¿Puedo usar nix-shell ¿En cualquier sistema operativo?

A: nix-shell Funciona con la mayoría de los sistemas operativos tipo Unix, incluidas las distribuciones de Linux y macOS. Windows no lo admite de forma nativa, pero los usuarios de Windows pueden acceder a él a través del Subsistema de Windows para Linux (WSL).

P: ¿Qué pasará con mi entorno después de salir? nix-shell?

Respuesta: Cuando cierras la sesión nix-shell, el entorno que creó fue desmantelado. Las adiciones temporales a PATH y otras variables de entorno se restauran, devolviendo el shell a su estado anterior.Los paquetes usados ​​permanecen en la tienda Nix para uso futuro, pero ya no se puede acceder a ellos externamente. nix-shell A menos que esté instalado globalmente.

P: ¿Qué debo hacer? nix-shell ¿Evitar el «infierno de la dependencia»?

A: nix-shell Utilice el enfoque puramente funcional de Nix Package Manager para la gestión de paquetes, donde cada paquete se construye y almacena en un entorno aislado. Las dependencias de cada paquete están claramente definidas y no interfieren entre sí, evitando así el problema común de los conflictos de dependencia.

P: ¿Puedo guardar el estado? nix-shell ¿ambiente?

Un rato nix-shell No salva directamente el estado del medio ambiente. La naturaleza declarativa del medio ambiente. shell.nix La documentación significa que su entorno es reproducible.Alguien en la misma situacion shell.nix Se puede restablecer el mismo entorno. Para escenarios más complejos, considere utilizar las capacidades de Nix para crear paquetes personalizados o incluso configuraciones completas del sistema.

P: Cómo agregar o eliminar paquetes nix-shell ¿ambiente?

R: Para modificar los paquetes en su entorno, edite shell.nix archivo para agregar o eliminar paquetes buildInputs listado en shell.nix documento.Si está utilizando un entorno temporal establecido mediante -psimplemente ajuste la lista de paquetes que proporciona al comando.

P: ¿Cómo realizar la recolección de basura en paquetes no utilizados?

Respuesta: Nix le permite realizar manualmente la recolección de basura para eliminar paquetes no utilizados del almacenamiento de Nix, liberando así espacio en disco.Puedes hacer esto ejecutando nix-collect-garbage -d desde la línea de comando.

en conclusión

Nix-shell te ayuda a mantener tu desarrollo organizado. Le permite crear espacios de trabajo separados para cada proyecto y acceder a todas las herramientas que necesitan. Esto evita conflictos entre proyectos y garantiza que todo funcione de la misma manera en diferentes computadoras. Ahora puede concentrarse en codificar en lugar de luchar contra conflictos de software.

recurso:

Lectura relacionada:

LEER  Cree fácilmente máquinas virtuales en Linux con Quickgui basado en QEMU

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba