加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Nix / OS架构概述?

发布时间:2020-12-14 02:21:11 所属栏目:Linux 来源:网络整理
导读:虽然Nix / OS维基和手册提供了很多优秀的信息,但我仍然无法获得架构概述.对问题的数量和存在性表示歉意;随意回答一个子集: 1.什么构成Nix包? 从我阅读手册的Nix包中可以看到: 一世.一个Nix表达式,用于获取构建所需的源和依赖项. II.构建器脚本. III. all-
虽然Nix / OS维基和手册提供了很多优秀的信息,但我仍然无法获得架构概述.对问题的数量和存在性表示歉意;随意回答一个子集:

1.什么构成Nix包?

从我阅读手册的Nix包中可以看到:

一世.一个Nix表达式,用于获取构建所需的源和依赖项.

II.构建器脚本.

III. all-packages.nix上的列表.

源和二进制文件以及生成的派生项放在nix / store中,并且通道自动更新,通过使用共享二进制缓存使它们保持最新.

一个.这是正确和完整的吗?

湾.nix表达式存储在哪里?

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

2.什么构成了Nix环境?

一个.环境在何处以及如何定义?

湾用户档案怎么样?

C. nix-shell命令如何工作?它与nix-env命令有关吗?

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

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

一个.这是真的,如果是这样的话,nixos-rebuild和nixos-install除此之外做了什么?

湾是否可以反转该过程,即从环境生成简洁的包或配置文件?

C.我不能用Nix做什么,我不能用Nix做什么?

4.使用Nix创建可移植且可重现的环境以与同事共享时的最佳做法是什么?

一个.共享桌面,服务器和开发环境的各种方法有哪些?

湾这些方法的用例是什么?

C.它们在便携性和可访问性方面有哪些优点和缺点?

5.公开奖金问题:关于Nix / OS架构还有什么其他重要的注意事项?

解决方法

1.A

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

1.B

你的nix表达式取决于你的设置.为了弄清楚这一点,请查看$NIX_PATH变量,该变量指向nixpkgs repo副本所在的位置.那些副本(有时仍然是)由nix-channel工具管理,但将来你可以指向nixpkgs,如:

export NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/16.03.tar.gz

您可以在这篇关于nix search paths的博客文章中阅读有关NIX_PATH的更多信息

1.C

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

2.A

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

nix-env工具使用?/ .nix-defexpr,默认情况下它是NIX_PATH的一部分,但这只是巧合.如果你清空NIX_PATH,由于?/ .nix-defexpr,nix-env仍然可以找到派生.

2.B

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

nix-env --switch-profile ./result

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

2.C

nix-shell实际上更接近nix-build命令.那么让我先解释一下nix-build的功能.

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

nix-build something.nix

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

另一方面,nix-shell将完全执行nix-build所做的操作,除非它不会触发构建器脚本并将您带入该环境.这样你最终会得到一个可以用来开发nix表达式的环境,它也可以在nixpkgs存储库之外(例如你的私有项目).

3.A

Nix安装二进制文件,NixOS为该二进制文件创建配置,并将其与init系统(当前为systemd)挂钩.

3.B

不.这是其他配置管理员所做的事情.尼克斯反过来工作.在blog post中很好地描述了方法的不同之处.

3.C

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

4.A / B / C

基本上没有限制,你认为如何适合你.一旦您了解了基本概念,您就会找到最适合您的概念.看看别人的dotfiles /配置并有意见.

我使用my collection的nixos配置为我的家人管理笔记本电脑
system.auto升级服务.

为了创建一个(构建)可重现的环境,我前段时间写过a blog post.

5.

我个人最喜欢的工具(或已经在这里)是vulnix.这将检查您当前的系统/项目是否存在当前漏洞(CVE).这使得nix与其他人脱颖而出,特别是因为它易于使用(没有企业设置).

我在nix中找到的另一个用例是使用dockerTools helpers构建可重现的docker镜像.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读