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
 
(18 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 58: Line 56:
=== Perfiles ===
=== Perfiles ===


<div lang="en" dir="ltr" class="mw-content-ltr">
Para construir un entorno de usuario o de sistema coherente, Nix crea enlaces simbólicos desde las entradas del Nix store hacia los perfiles. Estos son la interfaz mediante la cual Nix permite realizar retrocesos (rollbacks): como el store es inmutable y se conservan versiones anteriores de los perfiles, volver a un estado anterior simplemente consiste en cambiar el enlace simbólico para que apunte a un perfil previo. Más precisamente, Nix crea enlaces simbólicos a los binarios dentro de las entradas del Nix store que representan los entornos de usuario. Estos entornos de usuario se enlazan posteriormente mediante enlaces simbólicos a perfiles con etiquetas almacenados en <code>/nix/var/nix/profiles</code>, que a su vez están enlazados simbólicamente al archivo <code>~/.nix-profile</code> del usuario.
In order to construct a coherent user or system environment, Nix symlinks entries of the Nix store into ''profiles''. These are the front-end by which Nix allows rollbacks: since the store is immutable and previous versions of profiles are kept, reverting to an earlier state is simply a matter of change the symlink to a previous profile. To be more precise, Nix symlinks binaries into entries of the Nix store representing the user environments. These user environments are then symlinked into labeled profiles stored in <code>/nix/var/nix/profiles</code>, which are in turn symlinked to the user's <code>~/.nix-profile</code>.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
=== Sandboxing ===
=== Sandboxing ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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).
When sandbox builds are enabled, Nix will setup an isolated environment for each build process. It is used to remove further hidden dependencies set by the build environment to improve reproducibility. This includes access to the network during the build outside of <code>fetch*</code> functions and files outside the Nix store. Depending on the operating system access to other resources are blocked as well (ex. inter process communication is isolated on Linux).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
El sanboxing está habilitado de forma predeterminada en Linux y deshabilitado de forma predeterminada en macOS.
Sandboxing is enabled by default on Linux, and disabled by default on macOS.
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.
In pull requests for [https://github.com/NixOS/nixpkgs/ Nixpkgs] people are asked to test builds with sandboxing enabled (see <code>Tested using sandboxing</code> in the pull request template) because in [https://nixos.org/hydra/ official Hydra builds] sandboxing is also used.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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.
To configure Nix for sandboxing, set <code>sandbox = true</code> in <code>/etc/nix/nix.conf</code>; to configure NixOS for sandboxing set <code>nix.useSandbox = true;</code> in <code>configuration.nix</code>. The <code>nix.useSandbox</code> option is <code>true</code> by default since NixOS 17.09.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Alternative_Interpreters"></span>
=== Alternative Interpreters ===
=== Intérpretes alternativos ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Actualmente hay un proyecto para reimplementar Nix desde cero utilizando Rust.
There is an ongoing effort to reimplement Nix, from the ground up, in Rust.
</div>


* [https://code.tvl.fyi/tree/tvix tvix]
* [https://code.tvl.fyi/tree/tvix tvix]


<div lang="en" dir="ltr" class="mw-content-ltr">
También existe un fork de Nix 2.18 impulsado por la comunidad llamado Lix, centrado en la corrección, la facilidad de uso y el crecimiento del proyecto. Aunque ha migrado algunos componentes de Nix a Rust, no está reescrito desde cero como Tvix.
There is also a community-led fork of Nix 2.18 named Lix, focused on correctness, usability, and growth. While it has also ported some components of Nix to Rust, it is not a ground-up rewrite like Tvix.
</div>


* [https://lix.systems/ lix]
* [https://lix.systems/ lix]


<div lang="en" dir="ltr" class="mw-content-ltr">
Puedes encontrar iniciativas anteriores en [https://riir-nix.github.io/ riir-nix]
Earlier attempts can be found on [https://riir-nix.github.io/ riir-nix]
</div>


<span id="Notes"></span>
<span id="Notes"></span>