Nix (package manager)/es: Difference between revisions

Flandoor (talk | contribs)
No edit summary
Flandoor (talk | contribs)
No edit summary
Tags: Mobile edit Mobile web edit
 
(5 intermediate revisions by the same user not shown)
Line 3: Line 3:
{{Disambiguation|message=Este articulo trata acerca del gestor de paquetes Nix. No confundir con el [[Nix ecosystem|Ecosistema Nix]], el [[Nix (language)|lenguaje Nix]] o el [[Nix (command)|comando Nix]].}}
{{Disambiguation|message=Este articulo trata acerca del gestor de paquetes Nix. No confundir con el [[Nix ecosystem|Ecosistema Nix]], el [[Nix (language)|lenguaje Nix]] o el [[Nix (command)|comando Nix]].}}


<div lang="en" dir="ltr" class="mw-content-ltr">
Nix es un gestor de paquetes y un sistema de construcción que analiza instrucciones de compilación reproducibles especificadas en el [[Nix (language)|lenguaje de expresiones de Nix]], un lenguaje funcional puro con evaluación diferida. Las expresiones de Nix son funciones puras<ref>Los valores no pueden cambiar durante el cálculo. Las funciones siempre producen la misma salida si su entrada no cambia.</ref> que toman las dependencias como argumentos y producen una ''[[Derivations|derivación]]'' que especifica un entorno de construcción reproducible para el paquete. Nix almacena los resultados de la construcción en direcciones únicas especificadas mediante un hash del árbol completo de dependencias, creando un almacén de paquetes inmutable (también conocido como [[#Nix store|Nix store]]) que permite actualizaciones atómicas, retrocesos e instalación simultánea de diferentes versiones de un paquete, eliminando prácticamente el [[Wikipedia:Dependency hell|infierno de dependencias]].
Nix is a package manager and build system that parses reproducible build instructions specified in the [[Nix (language)|Nix Expression Language]], a pure functional language with lazy evaluation. Nix expressions are pure functions<ref>Values cannot change during computation. Functions always produce the same output if their input does not change.</ref> taking dependencies as arguments and producing a ''[[Derivations|derivation]]'' specifying a reproducible build environment for the package. Nix stores the results of the build in unique addresses specified by a hash of the complete dependency tree, creating an immutable package store (aka the [[#Nix store|nix store]]) that allows for atomic upgrades, rollbacks and concurrent installation of different versions of a package, essentially eliminating [[Wikipedia:Dependency hell|dependency hell]].
</div>


<span id="Usage"></span>
<span id="Usage"></span>
Line 15: Line 13:
En [[NixOS|NixOS]], Nix se instala automáticamente.
En [[NixOS|NixOS]], Nix se instala automáticamente.


En otras distribuciones Linux o en macOS, puedes instalar Nix siguiendo la [https://nix.dev/manual/nix/stable/installation/ sección de instalación del manual de Nix].
En otras distribuciones Linux o en macOS, puedes instalar Nix siguiendo la sección de instalación del [https://nix.dev/manual/nix/stable/installation/ manual de Nix].


<span id="Nix_commands"></span>
<span id="Nix_commands"></span>
=== Comandos Nix ===
=== Comandos Nix ===


Los [[Nix (command line utilities)|comandos Nix]] estan documentados en el [https://nix.dev/manual/nix/stable/command-ref/ manual de referencia de Nix]: comandos principales, utilidades y comandos experimentales. Previo a la version 2.0 (lanzada en Febrero 2018) Nix utilizaba comandos diferentes.
Los [[Nix (command line utilities)|comandos Nix]] estan documentados en el [https://nix.dev/manual/nix/stable/command-ref/ manual de referencia de Nix]: comandos principales, utilidades y comandos experimentales. Previo a la version 2.0 (lanzada en Febrero del 2018) Nix utilizaba comandos diferentes.


<span id="Configuration"></span>
<span id="Configuration"></span>
Line 27: Line 25:
En NixOS, Nix se puede configurar mediante la [https://search.nixos.org/options?query=nix opción <code>nix</code>].  
En NixOS, Nix se puede configurar mediante la [https://search.nixos.org/options?query=nix opción <code>nix</code>].  


Una instalación standalone de Nix se configura mediante <code>nix.conf</code> (normalmente ubicado en <code>/etc/nix/</code>). Los detalles sobre las opciones disponibles se encuentran en el[https://nix.dev/manual/nix/stable/command-ref/conf-file manual de referencia de Nix].  
Una instalación standalone de Nix se configura mediante <code>nix.conf</code> (normalmente ubicado en <code>/etc/nix/</code>). Los detalles sobre las opciones disponibles se encuentran en el [https://nix.dev/manual/nix/stable/command-ref/conf-file manual de referencia de Nix].  


También puedes configurar Nix mediante [[Home Manager|Home Manager]], que gestiona entornos declarativos para un único usuario. Para la configuración a nivel de sistema, puedes utilizar [https://github.com/numtide/system-manager System Manager] en Linux y [https://github.com/nix-darwin/nix-darwin nix-darwin] en macOS.
También puedes configurar Nix mediante [[Home Manager|Home Manager]], que gestiona entornos declarativos para un único usuario. Para la configuración a nivel de sistema, puedes utilizar [https://github.com/numtide/system-manager System Manager] en Linux y [https://github.com/nix-darwin/nix-darwin nix-darwin] en macOS.
Line 64: Line 62:
Cuando las compilaciones en entornos aislados están habilitadas, Nix configura un entorno aislado para cada proceso de construcción. Esto se utiliza para eliminar dependencias ocultas adicionales establecidas por el entorno de compilación y mejorar la reproducibilidad. Esto incluye el acceso a la red durante la compilación, excepto mediante las funciones <code>fetch*</code>, y el acceso a archivos fuera del Nix store. Dependiendo del sistema operativo, también se bloquea el acceso a otros recursos (por ejemplo, en Linux se aísla la comunicación entre procesos).
Cuando las compilaciones en entornos aislados están habilitadas, Nix configura un entorno aislado para cada proceso de construcción. Esto se utiliza para eliminar dependencias ocultas adicionales establecidas por el entorno de compilación y mejorar la reproducibilidad. Esto incluye el acceso a la red durante la compilación, excepto mediante las funciones <code>fetch*</code>, y el acceso a archivos fuera del Nix store. Dependiendo del sistema operativo, también se bloquea el acceso a otros recursos (por ejemplo, en Linux se aísla la comunicación entre procesos).


El aislamiento está habilitado de forma predeterminada en Linux y deshabilitado de forma predeterminada en macOS.
El sanboxing está habilitado de forma predeterminada en Linux y deshabilitado de forma predeterminada en macOS.
En las pull requests de [https://github.com/NixOS/nixpkgs/ Nixpkgs], se solicita a los usuarios probar las compilaciones con el aislamiento habilitado (véase <code>Tested using sandboxing</code> en la plantilla de pull requests), ya que en [https://nixos.org/hydra/ compilaciones oficiales de Hydra] también se utiliza el aislamiento.
En las pull requests de [https://github.com/NixOS/nixpkgs/ Nixpkgs], se solicita a los usuarios probar las compilaciones con el sandboxing habilitado (véase <code>Tested using sandboxing</code> en la plantilla de pull requests), ya que en [https://nixos.org/hydra/ compilaciones oficiales de Hydra] también se utiliza el aislamiento.


Para configurar Nix con aislamiento, define <code>sandbox = true</code> en <code>/etc/nix/nix.conf</code>; para configurar NixOS con aislamiento, define <code>nix.useSandbox = true;</code> en <code>configuration.nix</code>. La opción <code>nix.useSandbox</code> está establecida en <code>true</code> de forma predeterminada desde NixOS 17.09.
Para habilitar el sandboxing en Nix, establece <code>sandbox = true</code> en <code>/etc/nix/nix.conf</code>. En NixOS, establece <code>nix.useSandbox = true;</code> en <code>configuration.nix</code>. La opción <code>nix.useSandbox</code> está habilitada de forma predeterminada desde NixOS 17.09.


<span id="Alternative_Interpreters"></span>
<span id="Alternative_Interpreters"></span>