NixOS/zh: Difference between revisions

Weijia (talk | contribs)
Created page with "定义于 NixpkgsNixOS 模块系统 提供了定制操作系统配置所需的方法。通常被用于启用并定制如 Nginx 这样的服务、启用固件以及定制内核。"
Tags: Mobile edit Mobile web edit
Loxodoromy (talk | contribs)
mNo edit summary
 
(23 intermediate revisions by one other user not shown)
Line 29: Line 29:


<span id="32-bit_x86_architectures"></span>
<span id="32-bit_x86_architectures"></span>
==== 32位 x86 架构 ====
==== 32 位 x86 架构 ====


于32位 x86 架构(即 <code>i686</code>)的支持正在减少。大多数包仍然可以编译和运行,但它们的缓存可用性显著降低<ref>https://discourse.nixos.org/t/limited-cache-availability-for-i686-32-bits-x86-architecture/37626</ref>。32位 x86 架构不再提供预构建的 ISO 镜像文件,但其仍可手动构建。
于 32 位 x86 架构即 <code>i686</code>的支持正在减少。大多数包仍然可以编译和运行,但它们的缓存可用性显著降低<ref>https://discourse.nixos.org/t/limited-cache-availability-for-i686-32-bits-x86-architecture/37626</ref>。32 位 x86 架构不再提供预构建的 ISO 镜像文件,但其仍可手动构建。


<span id="64-bit_x86_architectures"></span>
<span id="64-bit_x86_architectures"></span>
==== 64位 x86 架构 ====
==== 64 位 x86 架构 ====


大多数 <code>x86_64</code> 设备都能顺利运行 NixOS。
大多数 <code>x86_64</code> 设备都能顺利运行 NixOS。


<span id="32-bit_ARM_architectures"></span>
<span id="32-bit_ARM_architectures"></span>
==== 32位 ARM 架构 ====
==== 32 位 ARM 架构 ====


{{Main|NixOS on ARM}}
{{Main|NixOS on ARM}}
Line 45: Line 45:


<span id="64-bit_ARM_architectures"></span>
<span id="64-bit_ARM_architectures"></span>
==== 64位 ARM 架构 ====
==== 64 位 ARM 架构 ====


{{Main|NixOS on ARM}}
{{Main|NixOS on ARM}}
Line 96: Line 96:
=== 与传统 Linux 发行版比较 ===
=== 与传统 Linux 发行版比较 ===


''Main Article: [[Special:MyLanguage/Nix vs. Linux Standard Base|Nix vs. Linux Standard Base]]''
''Main Article: [[Special:MyLanguage/Nix vs. Linux Standard Base|比较Nix和Linux标准基础]]''


NixOS 与其他 Linux 发行版的主要区别在于,NixOS 不遵循 [https://en.wikipedia.org/wiki/Linux_Standard_Base Linux 标准规范(LSB)] 的文件系统结构。在遵循 LSB 的系统中,软件通常存储在 <code>/{,usr}/{bin,lib,share}</code> 目录下,而配置文件通常存储在 <code>/etc</code>。如果程序的可执行文件被放置在 LSB 的某个 <code>/bin</code> 目录下,那么它就可以在用户环境中被访问。当一个程序引用动态链接库时,它将在 LSB 目录(<code>/lib</code>、<code>/usr/lib</code>)中搜索所需的库。
NixOS 与其他 Linux 发行版的主要区别在于,NixOS 不遵循 [https://en.wikipedia.org/wiki/Linux_Standard_Base Linux 标准规范(LSB)] 的文件系统结构。在遵循 LSB 的系统中,软件通常存储在 <code>/{,usr}/{bin,lib,share}</code> 目录下,而配置文件通常存储在 <code>/etc</code>。如果程序的可执行文件被放置在 LSB 的某个 <code>/bin</code> 目录下,那么它就可以在用户环境中被访问。当一个程序引用动态链接库时,它将在 LSB 目录(<code>/lib</code>、<code>/usr/lib</code>)中搜索所需的库。
Line 117: Line 117:
定义于 [[Special:MyLanguage/Nixpkgs|Nixpkgs]] 的 [[Special:MyLanguage/NixOS modules|NixOS 模块系统]] 提供了定制操作系统配置所需的方法。通常被用于启用并定制如 Nginx 这样的服务、启用固件以及定制内核。
定义于 [[Special:MyLanguage/Nixpkgs|Nixpkgs]] 的 [[Special:MyLanguage/NixOS modules|NixOS 模块系统]] 提供了定制操作系统配置所需的方法。通常被用于启用并定制如 Nginx 这样的服务、启用固件以及定制内核。


<div lang="en" dir="ltr" class="mw-content-ltr">
所有模块配置通常都是通过向 <code>/etc/nixos/configuration.nix</code> 文件添加选项来完成。维基上的大多数示例都展示了如何使用此文件来配置操作系统。
All module configuration is generally performed by adding options to <code>/etc/nixos/configuration.nix</code>. Most of the examples in the wiki show how this file can be used to configure the OS.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS 的模块系统实现了一个类型系统,以允许对选项设置进行类型检查。它还支持将多处定义的选项进行自动合并。这使得您可以将配置分散到多个文件中,而您在这些文件中设置的选项最终都会被合并在一起:
The NixOS module system implements a typing system which allows typechecking of option settings. It also enables options defined in multiple places to be merged automatically. This allows you to spread your configuration over multiple files, and the options you set across all of those files will be merged together:
</div>


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
Line 149: Line 145:
</nowiki>}}
</nowiki>}}


<div lang="en" dir="ltr" class="mw-content-ltr">
请参阅 [https://nixos.org/nixos/manual/index.html#sec-writing-modules NixOS 手册的模块部分] 以获取更多详细信息。
See the [https://nixos.org/nixos/manual/index.html#sec-writing-modules Modules section of the NixOS Manual] for more details.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Generations"></span>
=== Generations ===
=== 世代 ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
每当使用 <code>nixos-rebuild switch</code> 命令重构系统状态时,都将创建一个新的世代(generation)。您可以随时回滚到上一个世代,这在配置更改(或系统更新)被证明是有害时非常有用。
Every time the system state is rebuilt using <code>nixos-rebuild switch</code>, a new generation is created. You can revert to the previous generation at any time, which is useful if a configuration change (or system update) turns out to be detrimental.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
您可以通过以下命令回滚:
You can roll back via:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxHighlight lang=shell>
<syntaxHighlight lang=shell>
$ nix-env --rollback              # roll back a user environment
$ nix-env --rollback              # 回滚用户环境
$ nixos-rebuild switch --rollback  # roll back a system environment
$ nixos-rebuild switch --rollback  # 回滚系统环境
</syntaxHighlight>
</syntaxHighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS 还会在引导加载程序菜单中放置前几代系统的条目,因此,作为最后的手段,您可以通过重启来恢复到之前的配置。将当前启动的版本设置为默认运行:
NixOS also places entries for previous generations in the bootloader menu, so as a last resort you can always revert to a previous configuration by rebooting. To set the currently booted generation as the default run
</div>


<syntaxHighlight lang=shell>
<syntaxHighlight lang=shell>
Line 180: Line 165:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
由于 NixOS 会保留前几代系统状态以供回滚,因此更新后不会立即从系统中删除旧软件包版本。您可以手动删除旧版本:
Because NixOS keeps previous generations of system state available in case rollback is desired, old package versions aren't deleted from your system immediately after an update. You can delete old generations manually:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxHighlight lang=shell>
<syntaxHighlight lang=shell>
# delete generations older than 30 days
# 删除早于 30 天前的世代
$ nix-collect-garbage --delete-older-than 30d
$ nix-collect-garbage --delete-older-than 30d
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
# 删除之前的所有世代 - 运行此命令后您将无法回滚
# delete ALL previous generations - you can no longer rollback after running this
$ nix-collect-garbage -d                       
$ nix-collect-garbage -d                       
</syntaxHighlight>
</syntaxHighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
列出世代:
List generations:
<syntaxHighlight lang=shell>
<syntaxHighlight lang=shell>
# as root
# root 用户身份
$ nix-env --list-generations --profile /nix/var/nix/profiles/system
$ nix-env --list-generations --profile /nix/var/nix/profiles/system
</syntaxHighlight>
</syntaxHighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
切换世代:
Switch generations:
<syntaxHighlight lang=shell>
<syntaxHighlight lang=shell>
# as root switch to generation 204
# root 用户身份切换至 204 世代
$ nix-env --profile /nix/var/nix/profiles/system --switch-generation 204
$ nix-env --profile /nix/var/nix/profiles/system --switch-generation 204
</syntaxHighlight>
</syntaxHighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
删除损坏的世代:
delete broken generation(s):
<syntaxHighlight lang=shell>
<syntaxHighlight lang=shell>
# as root delete broken generations 205 and 206  
# root 用户身份删除损坏的 205 206 世代
$ nix-env --profile /nix/var/nix/profiles/system --delete-generations 205 206
$ nix-env --profile /nix/var/nix/profiles/system --delete-generations 205 206
</syntaxHighlight>
</syntaxHighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
您可以通过设置 <code>/etc/nixos/configuration.nix</code> 中的 [https://search.nixos.org/options?query=nix.gc nix.gc] 选项来配置自动垃圾回收。这是推荐操作,因为它可以降低 Nix Store 的大小。
You can configure automatic garbage collection by setting the [https://search.nixos.org/options?query=nix.gc nix.gc] options in <code>/etc/nixos/configuration.nix</code>. This is recommended, as it keeps the size of the Nix store down.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="See_also"></span>
== See also ==
== 另见 ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* [[Special:MyLanguage/NixOS modules|NixOS 模块]] - 一个用于模块化 [[Special:MyLanguage/Overview of the Nix Expression Language#Expressions|Nix 表达式]]的库,为 [[#declarative-configuration|NixOS 的声明式配置]] 提供支持。
* [[Special:MyLanguage/NixOS modules|NixOS modules]], a library for modular [[Special:MyLanguage/Overview of the Nix Expression Language#Expressions|Nix expressions]] which powers [[#declarative-configuration|the declarative configuration of NixOS]].
* [[Special:MyLanguage/NixOS VM tests|NixOS VM 测试]] - 一个基于  [[Special:MyLanguage/Nixpkgs|Nixpkgs]][[Special:MyLanguage/NixOS|NixOS]]、QEMU 和 Perl 用于创建可复现基础设施测试的库。
* [[Special:MyLanguage/NixOS VM tests|NixOS VM tests]], a library for creating reproducible infrastructure tests, based on [[Special:MyLanguage/Nixpkgs|Nixpkgs]], [[Special:MyLanguage/NixOS|NixOS]], QEMU and Perl.
* [https://github.com/ryan4yin/nixos-and-flakes-book NixOS & Flakes Book] (Ryan4yin, 2023) - 🛠️ ❤️ 一本非官方的 NixOS & Flakes 新手入门书籍。
* [https://github.com/ryan4yin/nixos-and-flakes-book NixOS & Flakes Book] (Ryan4yin, 2023) - 🛠️ ❤️ An unofficial NixOS & Flakes book for beginners.
</div>


[[Category:Pedias]]
[[Category:Pedias]]
[[Category:NixOS]]
[[Category:NixOS]]
[[Category:Nix{{#translation:}}]]
[[Category:Nix{{#translation:}}]]