首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nix/OS体系结构概述

Nix/OS体系结构概述
EN

Stack Overflow用户
提问于 2016-08-12 06:22:51
回答 1查看 1.6K关注 0票数 12

虽然Nix/OS和手册提供了许多优秀的信息,但我仍然很难获得架构概述。对问题的数量和天真表示歉意;可以随意回答一个子集:

1.什么构成Nix软件包?

从我阅读手册的角度来看,Nix软件包是:

另一种是获取所需的源和依赖项的Nix表达式。

(二)附属产品。一个builder脚本。

(C).all-packages.nix上的一份清单。

源和二进制以及生成的派生被放入nix/store中,通道自动更新,通过使用共享的二进制缓存来保持它们的更新效率。

这是正确完整的吗?

.nix表达式存储在哪里?

如果不同机器的nix/store具有相同的体系结构,我可以简单地在它们之间复制一个包文件夹吗?

2.什么构成Nix环境?

环境在哪里和如何定义?

B.用户简介呢?

nix-shell命令是如何工作的?它与nix-env命令相关吗?

configuration.nix 3.NixOS的与Nix环境之间有什么关系?

从手册和wiki中,我收集到NixOS是一个Nix包,它创建了一个基于configuration.nix的基本系统环境。

这是真的吗?如果是的话,nixos-rebuildnixos-install还做了什么?

是否有可能逆转这个过程,即从环境中生成简洁的包或配置文件?

我可以用NixOS做什么,我不能用Nix做什么?

4.使用Nix创建可移植和可复制的环境以便与同事共享的最佳实践是什么?

共享桌面、服务器和开发环境的各种方法是什么?

这些方法的用例是什么?

相对于便携性和可使用性而言,它们的优缺点是什么?

5.开放式附加问题:对于Nix/OS体系结构,还有什么是至关重要的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 11:12:57

1.a

是的,您也可以将Nix视为使用/nix/store作为缓存的构建工具。Nix作为一个包管理器只是这个设计的一个副作用。

1.b

nix表达式的位置取决于您的设置。要解决这个问题,请查看$NIX_PATH变量,它指向尼克斯回购副本所在的位置。这些副本(有时仍然是)由nix-channel工具管理,但将来您可以指向nixpkgs,例如:

代码语言:javascript
运行
复制
export NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/16.03.tar.gz

您可以在这篇关于NIX_PATH的博文中阅读更多关于nix搜索路径的信息。

1.c

是的,包可以在机器之间复制。实际上,已经有一个这样的工具:nix-copy-closure

2.a

我相信您在这里谈论的是您使用nix-env管理的Nix环境。我们通常将这些称为nix配置文件。我在第1点中提到的nix搜索路径(NIX_PATH变量)并不真正适用于nix-env

nix-env工具使用~/. NIX_PATH,默认情况下它是NIX_PATH的一部分,但这只是巧合。如果您清空NIX_PATH,则nix仍然能够找到导子,因为有~/.NIX_PATH。

2.b

用户配置文件只是一个nix环境(在2.a中描述),可以更改为其他任何内容,例如:

代码语言:javascript
运行
复制
nix-env --switch-profile ./result

其中./result/nix/store中的东西,或者是指向/nix/store的东西。然后,上面的命令将使用您的~/.nix-profile切换./result符号链接。

2.c

nix-shell实际上更接近nix-build命令。让我先解释一下nix-build的作用。

nix-build用于构建.nix文件(也是派生文件,但为此,我必须解释派生是什么)。一个如何使用nix-build的示例

代码语言:javascript
运行
复制
nix-build something.nix

上面的命令将生成一个./result符号链接,它指向/nix/store中的某个内容。Nix命令将实现生成,并将输出存储到/nix/store中。

另一方面,nix-shell将完全按照nix-build所做的做,除了它会触发构建器脚本(而不是),并且会将您放到那个环境中。这样,您将得到一个可以用来开发nix表达式的环境,该环境也可以位于nixpkgs存储库之外(例如。你的私人项目)。

3.a

Nix安装二进制文件,NixOS为该二进制文件创建配置,并将其与init系统(目前的systemd)连接起来。

3.b

不是的。这是其他配置管理器所做的。尼克斯的工作方式正好相反。这个博客帖子很好地描述了方法上的差异。

3.c

正如3.a中所述,nix只安装二进制文件,而nixos也将确保二进制文件正在运行。

4.a/b/c

基本上是没有限制的,做你认为适合你的事。一旦你理解了基本概念,你就会发现什么最适合你。查看其他人的dotfiles/配置,并有自己的意见。

我使用我的收藏的nixos配置,通过system.autoUpgrade服务为我的家庭管理笔记本电脑。

为了创建一个(构建)可复制的环境,我不久前编写了博客文章

5.

我个人最喜欢的工具即将到来(或已经在这里)是vulnix。这将检查当前系统/项目是否存在当前漏洞(CVEs)。这使得nix脱颖而出,特别是因为它非常容易使用(没有企业设置)。

我为nix找到的另一个用例是使用dockerTools帮手构建可复制的坞映像。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38911217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档