Nix (package manager)/zh-hans: Difference between revisions

Loxodoromy (talk | contribs)
Created page with "更早的尝试可在riir-nix找到"
FuzzyBot (talk | contribs)
Updating to match new version of source page
Tags: Mobile edit Mobile web edit
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{Navbox Nix}}
{{Disambiguation|message=<span lang="en" dir="ltr" class="mw-content-ltr">This article is about the Nix package manager. Not to be confused with the [[Nix ecosystem|Nix ecosystem]], the [[Nix (language)|Nix language]] or the [[Nix (command)|Nix command]].</span>}}
<div class="mw-translate-fuzzy">
{{Navbox Nix}}
{{Navbox Nix}}
{{Disambiguation|message=本条目介绍的是Nix包管理器。请勿与[[Nix ecosystem|Nix生态系统]]、[[Nix (language)|Nix(语言)]]或[[Nix (command)|Nix(命令)]]混淆。}}
{{Disambiguation|message=本条目介绍的是Nix包管理器。请勿与[[Nix ecosystem|Nix生态系统]]、[[Nix (language)|Nix(语言)]]或[[Nix (command)|Nix(命令)]]混淆。}}
Nix是一个包管理器和构建系统,它解析由[[Nix Expression Language|Nix表达式语言]] (一种惰性求值的纯函数式语言) 指定的可复现的构建指令。Nix表达式是纯函数<ref>值在计算过程中不会改变。当输入不变时,函数总是得到相同的输出。</ref>,它接受依赖作为参数,并为该软件包生成一个指定可复现构建环境的''[[Derivations|derivation]]''。Nix把构建结果存储在由整个依赖树的哈希值指定的唯一地址,从而创建一个不可变的包存储 (即[[#Nix store|nix store]]),使得原子升级、回滚、同时安装同一软件包的不同版本成为可能,从根本上消除了[https://en.wikipedia.org/wiki/Dependency_hell 依赖地狱]。  
Nix是一个包管理器和构建系统,它解析由[[Nix Expression Language|Nix表达式语言]] (一种惰性求值的纯函数式语言) 指定的可复现的构建指令。Nix表达式是纯函数<ref>值在计算过程中不会改变。当输入不变时,函数总是得到相同的输出。</ref>,它接受依赖作为参数,并为该软件包生成一个指定可复现构建环境的''[[Derivations|derivation]]''。Nix把构建结果存储在由整个依赖树的哈希值指定的唯一地址,从而创建一个不可变的包存储 (即[[#Nix store|nix store]]),使得原子升级、回滚、同时安装同一软件包的不同版本成为可能,从根本上消除了[https://en.wikipedia.org/wiki/Dependency_hell 依赖地狱]。
</div>


<span id="Usage"></span>
<span id="Usage"></span>
== 用法 ==
== 用法 ==


<span id="Installation"></span>
<div class="mw-translate-fuzzy">
=== 安装 ===
=== 安装 ===
在[[NixOS]]上,Nix已经被自动安装。
在[[NixOS]]上,Nix已经被自动安装。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
On [[NixOS|NixOS]], Nix is automatically installed.
</div>


<div class="mw-translate-fuzzy">
在其他Linux发行版或macOS上,你可以按照[https://nixos.org/manual/nix/stable/installation/installation Nix手册中的安装部分]来安装Nix。
在其他Linux发行版或macOS上,你可以按照[https://nixos.org/manual/nix/stable/installation/installation Nix手册中的安装部分]来安装Nix。
</div>


<span id="Nix_commands"></span>
<span id="Nix_commands"></span>
=== Nix命令 ===
=== Nix命令 ===


<div class="mw-translate-fuzzy">
[[Nix (command line utilities)|Nix命令]]在[https://nixos.org/manual/nix/stable/command-ref/command-ref Nix参考手册]中有详细说明,分为主要命令、工具命令和实验性命令。在2.0版本(发布于2018年2月)之前,命令有所不同。
[[Nix (command line utilities)|Nix命令]]在[https://nixos.org/manual/nix/stable/command-ref/command-ref Nix参考手册]中有详细说明,分为主要命令、工具命令和实验性命令。在2.0版本(发布于2018年2月)之前,命令有所不同。
</div>


<span id="Configuration"></span>
<div class="mw-translate-fuzzy">
=== 配置 ===
=== 配置 ===
在NixOS上,Nix可通过[https://search.nixos.org/options?query=nix. <code>nix</code>选项]配置。  
在NixOS上,Nix可通过[https://search.nixos.org/options?query=nix. <code>nix</code>选项]配置。
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
On NixOS, Nix can be configured using the [https://search.nixos.org/options?query=nix <code>nix</code> option].
</div>


独立的Nix通过<code>nix.conf</code>(通常在<code>/etc/nix/</code>下)配置。可用选项的细节[https://nixos.org/manual/nix/stable/command-ref/conf-file 在Nix参考手册中]。  
<div class="mw-translate-fuzzy">
独立的Nix通过<code>nix.conf</code>(通常在<code>/etc/nix/</code>下)配置。可用选项的细节[https://nixos.org/manual/nix/stable/command-ref/conf-file 在Nix参考手册中]。
</div>


<div class="mw-translate-fuzzy">
[[Home Manager]]为单一用户管理声明式环境,也可用于配置Nix。对于系统级配置,可在Linux上使用System Manager,在macOS上使用nix-darwin。
[[Home Manager]]为单一用户管理声明式环境,也可用于配置Nix。对于系统级配置,可在Linux上使用System Manager,在macOS上使用nix-darwin。
</div>


<span id="Internals"></span>
<span id="Internals"></span>
Line 57: Line 84:
=== 沙盒化 ===
=== 沙盒化 ===


当启用沙盒构建时,Nix会为每个构建过程设置一个隔离的环境。它用于移除构建环境中额外的隐藏依赖,以提高可复现性。这包括在构建过程中禁止<code>fetch*</code>函数之外对网络的访问,和Nix存储之外对文件的访问。根据操作系统的不同,对其他资源的访问也会被阻止(例如,进程间通信在Linux上被隔离);详细信息见Nix手册里的[https://nixos.org/nix/manual/#sec-conf-file nix.conf部分]
当启用沙盒构建时,Nix会为每个构建过程设置一个隔离的环境。它用于移除构建环境中额外的隐藏依赖,以提高可复现性。这包括在构建过程中禁止<code>fetch*</code>函数之外对网络的访问,和Nix存储之外对文件的访问。根据操作系统的不同,对其他资源的访问也会被阻止(例如,进程间通信在Linux上被隔离)。


<div class="mw-translate-fuzzy">
沙盒化在Linux上默认启用,在macOS上默认禁用。
沙盒化在Linux上默认启用,在macOS上默认禁用。
Nixpkgs的拉取请求(pull requests)中,要求在沙盒化启用条件下测试构建(见拉取请求模板中的<code>Tested using sandboxing</code>),因为在[https://nixos.org/hydra/ 官方Hydra构建]中使用了沙盒化。
Nixpkgs的拉取请求(pull requests)中,要求在沙盒化启用条件下测试构建(见拉取请求模板中的<code>Tested using sandboxing</code>),因为在[https://nixos.org/hydra/ 官方Hydra构建]中使用了沙盒化。
</div>


为Nix配置沙盒化,在<code>/etc/nix/nix.conf</code>里设置<code>sandbox = true</code>。为NixOS配置沙盒化,在<code>configuration.nix</code>里设置<code>nix.useSandbox = true;</code>。从NixOS 17.09开始,<code>nix.useSandbox</code>选项默认为<code>true</code>
为Nix配置沙盒化,在<code>/etc/nix/nix.conf</code>里设置<code>sandbox = true</code>。为NixOS配置沙盒化,在<code>configuration.nix</code>里设置<code>nix.useSandbox = true;</code>。从NixOS 17.09开始,<code>nix.useSandbox</code>选项默认为<code>true</code>
Line 67: Line 96:
=== 可选的解释器 ===
=== 可选的解释器 ===


一项用Rust重新从头实现Nix的工作正在进行。
一项用Rust从零开始重新实现Nix的工作正在进行。


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://cs.tvl.fyi/depot/-/tree/tvix tvix]
* [https://code.tvl.fyi/tree/tvix tvix]
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Nix 2.18有一个名叫Lix的社区领导分支,专注于正确性、易用性和成长性。尽管它也将一些Nix组件移植到Rust,它不是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>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 81: Line 108:
</div>
</div>


<div class="mw-translate-fuzzy">
更早的尝试可在riir-nix找到
更早的尝试可在riir-nix找到
</div>


<span id="Notes"></span>
<div class="mw-translate-fuzzy">
== 备注 ==
== 备注 ==
<references />
<references />
</div>


<references />


<div lang="en" dir="ltr" class="mw-content-ltr">
[[Category:Pedias]]
[[Category:Pedias]]
[[Category:Nix]]
[[Category:Nix]]
[[Category:Incomplete]]
[[Category:Incomplete]]
[[Category:Software]]
[[Category:Software]]
</div>