NixOS 系列 #1：你为什么要考虑使用 NixOS？
我正在考虑从我一直以来最喜欢的 Pop!_OS 切换到 NixOS。
NixOS
124.163.214.86
考虑一下为什么不用？<br />
1. 源的速度实在是令人无法忍受，国内源又和官方源不一样的校验码，唉......<br />
2. 楼下继续......
来自山西忻州的 Chrome 110.0|Windows 10 用户
2023-03-09T10:50:35.000
43.207.117.53
让我评价NixOS？我TM吹爆！<br />
楼下继续？抱歉，我现在就在NixOS回复你，国内源有问题所以我一直挂梯滚系统。<br />
非要说为什么不用？主要的原因就是门槛太高，然后就是在AUR的少数软件nixpkgs目前还没有，还有其他的一些小问题。
来自日本的 Chrome 110.0|GNU/Linux 用户
2023-03-15T11:22:12.000
125.47.41.149
nix包管理器是挺厉害的，就是配置看起来好复杂。nixos好像不太行，没啥特点。官方包仓库软件数量很吓人，但实际还是不太够，软件包也不够新，内核都是lts的。
来自河南郑州的 Chrome Mobile 111.0|Android 13 用户
2023-03-20T12:56:35.000
125.47.41.149
nix包管理器是挺厉害的，就是配置看起来好复杂。nixos好像不太行，没啥特点。官方包仓库软件数量很吓人，但实际还是不太够，软件包也不够新，内核都是lts的。
来自河南郑州的 Chrome Mobile 111.0|Android 13 用户
2023-03-20T12:56:37.000
我正在考虑从我一直以来最喜欢的 Pop!_OS 切换到 NixOS。
![](/data/attachment/album/202303/08/150044jhtdyahoax5ghbxn.jpg)


NixOS……又一个使用不同软件包管理器的发行版？?


好吧，NixOS 是 [高级 Linux 发行版](https://itsfoss.com/advanced-linux-distros/) 之一。


所以如果我写这个，我一定有一个充分的理由，对吗？嗯，有很多！


我已经使用它 3 个月了，它是如此之好，以至于我正在考虑从我一直以来最喜欢的 **Pop!\_OS 切换到 NixOS**。


在本指南中，我将分享 NixOS 在众多 Linux 发行版中脱颖而出的主要特点。


别担心，在我们继续之前，让我告诉你什么是 NixOS：



> 
> 它是一个以 Nix 包管理器为核心的 Linux 发行版，为你省去了在其它的 Linux 发行版上设置 Nix 的麻烦，可以让你充分利用它的优势。由开发 Nix 的同一个团队构建。
> 
> 
> 


### 使用 NixOS 的 6 个理由


NixOS 是一个有趣的从零开始构建的 [独立 Linux 发行版](https://itsfoss.com/independent-linux-distros/)。


每个人都可以通过使用 NixOS 学到很多东西，但**在我看来**，如果你是一个开发人员或计算机科学的学生，NixOS 应该非常合适。


![nix os screenshot with gnome](/data/attachment/album/202303/08/150107bzwx5gvwzkvobn7x.png)


让我告诉你为什么。


#### 1、不易损坏/易于恢复


就其核心而言，NixOS 是为长期使用而构建的。


这并不意味着它像 Debian 那样用多年前的软件包来保证稳定性，而是遵循一种不同的方法。


为了理解 NixOS 为何如此稳定，让我们谈谈用户一般是如何破坏他们的系统的，即“*依赖性问题或软件包冲突*”


在更新系统或安装一个新的软件包时，你一般会面临系统崩溃的风险。主要是因为你的软件包管理器无法满足依赖性，或者安装的软件包与现有系统冲突导致的。


**而 NixOS 有一个非常聪明的方法来处理这个问题。**


你看，每当你升级你的系统或安装一个软件包时，**系统的状态就会被重建**，被称为超过当前的“<ruby> 新世代 <rt>  new generation </rt></ruby>”。


![nix os listing generations via terminal](/data/attachment/album/202303/08/150108rjp3iwscjj100339.png)


因此，如果你在使用新的软件包或更新时遇到任何麻烦，你可以随时回滚到“<ruby> 旧世代 <rt>  old generation </rt></ruby>”，在那里你会找到**系统以前的状态**。


即使系统无法访问，你也能在启动时找到以前几代。


#### 2、可重复性


通过一个配置文件，你可以为其他物理系统创建一个你当前环境的副本。


这个功能给你带来的好处是，你可以使用 Nix 配置文件进行安装和配置。


当你有了适合你的用途的配置文件，将该文件发送到新的系统中，用你的配置文件替换默认的配置文件。就是这么简单！


**重建配置，升级系统，并通过给定的命令进行切换：**



```
sudo nixos-rebuild switch --upgrade

```

你将在几分钟内拥有与你的主机上完全相同的开发环境，并进行复制。


#### 3、轻松回滚


虽然你可能已经从 NixOS 的 “<ruby> 世代 <rt>  generation </rt></ruby>” 特性中得到了灵感。


但还有更多的内容。?️


NixOS 在很大程度上依赖于符号链接。如果这对你来说是一个新概念，请参考下面的指南：



> 
> **[如何在 Linux 中创建符号链接（完整指南）](https://linuxhandbook.com/symbolic-link-linux/)**
> 
> 
> 


一般来说，在其他 Linux 发行版中，当你升级一个软件包时，新的软件包会取代旧的。


但 NixOS 不是这样的。


在 NixOS 中，软件包被隔离并存储在一个单独的目录中，这就是使用符号链接的原因。


每当你升级一个软件包时，**NixOS 会调整符号链接来定位新的软件包，但不会删除旧的**。


因此，如果你面临与新包的冲突，只需切换到旧世代，符号链接有助于定位旧版本的包。?


#### 4、Nix 包管理器


Nix 包管理器允许你访问超过 80,000 个软件包！不仅仅局限于 Linux，它还可以在 **macOS、WSL2、Docker 等平台**上使用。


而且，软件包的可用性与 AUR 相似，甚至比 AUR 更好，因为你应该在 Nix 包管理器上找到几乎所有的东西（我是认真的）。


例如，我想安装 Librewolf 浏览器，这在大多数 Linux 发行版的默认仓库中是不可用的。


但是，Nix 有它！这意味着你可以依靠 Nix 包管理器来安装几乎所有的软件包。


如果你有先前的 Linux 经验，它也相对容易理解。总而言之，**Nix 包管理器令人印象深刻**！


#### 5、使用同一软件包的多个版本


这对开发者来说可能是至关重要的，有些应用需要特定依赖的旧版本，而有些则需要最新的版本。


而且，正如我前面提到的，Nix 将包安装到一个特定的子目录中，每个包都是隔离的，所以一个包不会干扰另一个包！


在使用 Nix 之前，我使用虚拟机和容器来满足同一软件包的不同依赖性，尤其是 PHP，但 NixOS 为我的工作流程带来了奇迹。


#### 6、无需安装就能测试软件包的能力


你可以使用 [nix-shell](https://nixos.org/manual/nix/stable/command-ref/nix-shell.html)，它通过临时修改 `$PATH` 环境变量来测试一个包。


而且没有任何限制。你能够测试每一个可供安装的软件包！


### NixOS 系列：让我们探索更多！


这是我们 Nix 系列的第一部分，我介绍了使用 NixOS 的原因。我相信更多的 Linux 用户应该去了解它，如果他们还没有了解的话。


在下一部分，我将解释如何在你的虚拟机中安装 NixOS。


? 欢迎在下面的评论中分享关于 NixOS 的其他内容的建议。




---


via: <https://itsfoss.com/why-use-nixos/>


作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

