Nix ecosystem/zh: Difference between revisions

Ardenet (talk | contribs)
Created page with "Linux 和 Darwin 中的可重现构建和软件包管理"
Ardenet (talk | contribs)
No edit summary
Tags: Mobile edit Mobile web edit
 
(22 intermediate revisions by the same user not shown)
Line 8: Line 8:


{| class="wikitable"
{| class="wikitable"
|+ <span class="mw-translate-fuzzy">{| class="wikitable"
|+ Nix 生态系统核心组件
|+ Nix 生态系统核心组件
|-
! 组件
! 手册(Manual)
! 描述
! 用途
! 协议
|-
| [[NixOS]]
| [https://nixos.org/nixos/manual/ NixOS 手册]
| 一个由 Nix 构建''所有''组件的 Linux 发行版,因此支持可重现的、声明式的全系统配置管理以及原子升级和回滚。
| 声明式配置桌面、服务器和集群。
| MIT
|-
| [[Nixpkgs]]
| [https://nixos.org/nixpkgs/manual/ Nixpkgs 手册]
| 最大的社区维护的 Nix 软件包和 NixOS 模块仓库,NixOS 的标准版本也托管在这里。
| 分享 Nix 软件包和 NixOS 模块
| MIT
|-
| [[Hydra]]
| [https://nixos.org/hydra/manual/ Hydra 手册]
| 基于 Nix 的持续构建系统
| 持续构建集群
| GPL-3.0
|-
| [[Nix]]
| [https://nixos.org/nix/manual/ Nix 手册]
| 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。
| Linux 和 Darwin 中的可重现构建和软件包管理
| LGPL-2.1
|}</span>
|-
|-
! 组件
! 组件
Line 75: Line 43:


{| style="max-width: 36rem; margin: auto;"
{| style="max-width: 36rem; margin: auto;"
|+ <span class="mw-translate-fuzzy">{| style="max-width: 36rem; margin: auto;"
|+ '''Nix 核心生态系统技术栈'''
|+'''Nix 核心生态系统技术栈'''
|style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">NixOS</div>
一个用 Nixpkgs 构建的 Linux 发行版和配置系统
!
|-
|style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">Nixpkgs</div>
一个巨大的,社区维护的软件仓库
|style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">Hydra</div>
一个基于 Nix 的持续构建系统
|-
|style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%" colspan="2"|
<div style="font-size: 1.3em; font-weight: bold">Nix</div>
一个纯函数式的构建系统
|}</span>
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">NixOS</div>
<div style="font-size: 1.3em; font-weight: bold">NixOS</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A Linux distribution and configuration system built using Nixpkgs.</span>
一个用 Nixpkgs 构建的 Linux 发行版和配置系统。
|-
|-
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">Nixpkgs</div>
<div style="font-size: 1.3em; font-weight: bold">Nixpkgs</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A large, community-maintained repository of packages.</span>
一个巨大的,社区维护的软件仓库。
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">Hydra</div>
<div style="font-size: 1.3em; font-weight: bold">Hydra</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A continuous build system built on Nix.</span>
一个基于 Nix 的持续构建系统。
|-
|-
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%" colspan="2"|
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%" colspan="2"|
<div style="font-size: 1.3em; font-weight: bold">Nix</div>
<div style="font-size: 1.3em; font-weight: bold">Nix</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A pure and functional build system.</span>
一个纯函数式的构建系统。
|}
|}


<span id="Usage_of_NixOS"></span>
<span id="Usage_of_NixOS"></span>
<div class="mw-translate-fuzzy">
== NixOS 的使用方式 ==
== NixOS 的使用方式 ==
用户可以像安装其他 Linux 发行版一样,将 ''NixOS'' 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 ''Nixpkgs'' 中可安装的软件包和配置选项的信息。他们使用 ''Nix'' 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。
用户可以像安装其他 Linux 发行版一样,将 ''NixOS'' 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 ''Nixpkgs'' 中可安装的软件包和配置选项的信息。他们使用 ''Nix'' 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Users install the ''NixOS'' distribution on their computers just as any other Linux distribution. They read about packages to install and configuration options in ''Nixpkgs'' via https://search.nixos.org and this wiki. They use the ''Nix'' language to declaratively describe in a text file what software packages should be installed and how the system should be configured. They run 2 command line programs in a terminal to transform the system into the described system. They use the system as any other Linux system.
</div>


<span id="Development_of_NixOS"></span>
<span id="Development_of_NixOS"></span>
<div class="mw-translate-fuzzy">
== NixOS 的开发 ==
== NixOS 的开发 ==
''NixOS'' 的开发者主要工作在 ''Nixpkgs'' 上。''NixOS'' 本身的开发由三个主要领域组成,同时还有一些体量较小但同样重要的其他领域。主要领域包括打包、模块系统和文档。
''NixOS'' 的开发者主要工作在 ''Nixpkgs'' 上。''NixOS'' 本身的开发由三个主要领域组成,同时还有一些体量较小但同样重要的其他领域。主要领域包括打包、模块系统和文档。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Developers of ''NixOS'' mainly work on ''Nixpkgs''. ''NixOS'' development itself is compromised of three large areas as well as some others which are smaller by volume (but no less important). The major ones include packaging, the module system, and documentation.
</div>


* 打包工作在 ''Nixpkgs'' 中进行,并不仅限于 ''NixOS'' 或基于 Linux 的平台。那些不专属于 ''NixOS'' 的软件包(例如运行发行版本身所需的工具)的维护者通常会照顾多个平台,尽管这并非严格要求。
* 打包工作在 ''Nixpkgs'' 中进行,并不仅限于 ''NixOS'' 或基于 Linux 的平台。那些不专属于 ''NixOS'' 的软件包(例如运行发行版本身所需的工具)的维护者通常会照顾多个平台,尽管这并非严格要求。
Line 140: Line 81:


{| class="wikitable"
{| class="wikitable"
|+ <span class="mw-translate-fuzzy">{| class="wikitable"
|+ ''NixOS'' 开发的各种示例及相关链接
|+ ''NixOS'' 开发的各种示例及相关链接
! 开发类型 !! 开发位置 !! 示例
! 开发类型 !! 开发所属 !! 示例
|-
|-
| 平台无关的打包 || ''Nixpkgs'' || [https://github.com/NixOS/nixpkgs/blob/bf3287dac860542719fe7554e21e686108716879/pkgs/tools/misc/coreutils/default.nix coreutils 软件包], [https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/stdenv ''stdenv'' 框架], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/applications/office/libreoffice/default.nix Libreoffice 软件包]
| 平台无关的打包 || ''Nixpkgs'' || [https://github.com/NixOS/nixpkgs/blob/bf3287dac860542719fe7554e21e686108716879/pkgs/tools/misc/coreutils/default.nix coreutils 软件包], [https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/stdenv ''stdenv'' 框架], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/applications/office/libreoffice/default.nix Libreoffice 软件包]
|-
|-
| 平台无关的工具 || ''Nixpkgs'' 及其他多个仓库 || [https://github.com/NixOS/nix 上游/默认 Nix 实现 (CppNix)], [https://github.com/NixOS/hydra ''Hydra'' 源代码], [https://github.com/NixOS/nixpkgs-merge-bot ''Nixpkgs'' 合并机器人]
| 平台无关的工具 || ''Nixpkgs'' 及其他多个仓库 || [https://github.com/NixOS/nix 上游/默认 Nix 实现(CppNix)], [https://github.com/NixOS/hydra ''Hydra'' 源代码], [https://github.com/NixOS/nixpkgs-merge-bot ''Nixpkgs'' 合并机器人]
|-
|-
| ''NixOS'' 工具 || 主要是 ''Nixpkgs'' || [https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/by-name/ni/nixos-rebuild-ng nixos-rebuild-ng 源代码], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix ''NixOS'' 安装映像]  
| ''NixOS'' 工具 || 主要是 ''Nixpkgs'' || [https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/by-name/ni/nixos-rebuild-ng nixos-rebuild-ng 源代码], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix ''NixOS'' 安装映像]
|-
|-
| ''NixOS'' 模块系统 || ''Nixpkgs'' || [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/display-managers/default.nix 显示管理器配置], [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/databases/mysql.nix MySQL(及其衍生)数据库配置]
| ''NixOS'' 模块系统 || ''Nixpkgs'' || [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/display-managers/default.nix 显示管理器配置], [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/databases/mysql.nix(及其衍生)数据库配置]
|-
|-
| 基础设施 || || [https://github.com/NixOS/nixos-wiki-infra 本维基的基础设施], [https://github.com/NixOS/infra ''NixOS'' 基础设施]
| 基础设施 || || [https://github.com/NixOS/nixos-wiki-infra 本维基的基础设施], [https://github.com/NixOS/infra ''NixOS'' 基础设施]
Line 158: Line 98:
| 技术组织 || || [https://github.com/NixOS/nixpkgs/issues/390768 ''NixOS'' RelEng], [https://github.com/NixOS/rfcs/ ''Nix'' 和 ''NixOS'' RFC]
| 技术组织 || || [https://github.com/NixOS/nixpkgs/issues/390768 ''NixOS'' RelEng], [https://github.com/NixOS/rfcs/ ''Nix'' 和 ''NixOS'' RFC]
|-
|-
| 其他 || || [https://github.com/NixOS/nixos-artwork ''NixOS'' artwork], [https://discourse.nixos.org/ ''NixOS''(及相关)讨论区], [https://github.com/NixOS/foundation ''NixOS 基金会'']  
| 其他 || || [https://github.com/NixOS/nixos-artwork ''NixOS'' artwork], [https://discourse.nixos.org/ ''NixOS''(及相关)讨论区], [https://github.com/NixOS/foundation ''NixOS 基金会'']
|}</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Type of development</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Location of Development</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Platform Agnostic Packaging</span> || ''Nixpkgs'' || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/blob/bf3287dac860542719fe7554e21e686108716879/pkgs/tools/misc/coreutils/default.nix coreutils package], [https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/stdenv ''stdenv'' framework], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/applications/office/libreoffice/default.nix Libreoffice package]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Platform Agnostic Tooling</span> || <span lang="en" dir="ltr" class="mw-content-ltr">''Nixpkgs'' and various repositories</span> || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nix upstream/default Nix implementation (CppNix)], [https://github.com/NixOS/hydra ''Hydra'' source code], [https://github.com/NixOS/nixpkgs-merge-bot ''Nixpkgs'' merge bot]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">''NixOS'' Tooling</span> || <span lang="en" dir="ltr" class="mw-content-ltr">mostly ''Nixpkgs''</span> || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/by-name/ni/nixos-rebuild-ng nixos-rebuild-ng source code], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix ''NixOS'' Installation ISOs]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">''NixOS'' Module System</span> || ''Nixpkgs'' || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/display-managers/default.nix Display Manager configuration], [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/databases/mysql.nix MySQL (and derivative) database configuration]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Infrastructure</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixos-wiki-infra Infrastructure for this Wiki], [https://github.com/NixOS/infra ''NixOS'' infra]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Documentation</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://wiki.nixos.org This Wiki], [https://github.com/NixOS/nixpkgs/blob/8d92119c540d78599ba208010c722a60958810f4/doc/stdenv/stdenv.chapter.md ''stdenv'' documentation], [https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/configuration/ipv6-config.section.md ''NixOS'' IPv6 configuration] (visible in the [https://nixos.org/manual/nixos/stable/#sec-ipv6 IPv6 section of the ''NixOS'' manual]), [https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md ''Nixpkgs'' Contribution Guidelines]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Tech Organisation</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/issues/390768 ''NixOS'' RelEng], [https://github.com/NixOS/rfcs/ ''Nix'' and ''NixOS'' RFCs]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Other</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixos-artwork ''NixOS'' artwork], [https://discourse.nixos.org/ ''NixOS'' (and related) discourse], [https://github.com/NixOS/foundation ''NixOS Foundation'']</span>
|}
|}