Ixx*_*xie 10 linux portability reproducible-research nixos nix
虽然Nix/OS维基和手册提供了很多优秀的信息,但我仍然无法获得架构概述.对问题的数量和存在性表示歉意; 随意回答一个子集:
1.什么构成Nix包?
从我阅读手册的Nix包中可以看到:
一世.一个Nix表达式,用于获取构建所需的源和依赖项.
II.一个builder
脚本.
III.列表上all-packages.nix
.
源和二进制以及生成的派生都放在nix/store
,并且通道自动更新,通过使用共享二进制缓存使它们保持最新.
一个.这是正确和完整的吗?
湾 .nix表达式存储在哪里?
C.nix/store
如果它们具有相同的架构,我可以简单地在不同机器的s 之间复制一个包文件夹吗?
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架构还有什么重要的注意事项?
小智 11
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
Run Code Online (Sandbox Code Playgroud)
您可以在这篇关于nix搜索路径的博客文章中阅读有关NIX_PATH的更多信息
1.C
是的,可以在机器之间复制包.实际上,已有一个工具:nix-copy-closure
.
2.A
我相信你在这里谈论你管理的Nix环境nix-env
.我们通常将这些称为nix配置文件.我NIX_PATH
在第1点中对nix搜索路径(变量)所说的内容并不适用nix-env
.
该nix-env
工具使用〜/ .nix-defexpr,默认情况下是NIX_PATH的一部分,但这只是巧合.如果你清空NIX_PATH,由于〜/ .nix-defexpr,nix-env仍然可以找到派生.
2.B
用户配置文件只是一个nix环境(在2.a中描述),您可以将其更改为其他任何内容,例如:
nix-env --switch-profile ./result
Run Code Online (Sandbox Code Playgroud)
./result
什么东西在哪里/nix/store
或什么东西指向/nix/store
.然后上面的命令将~/.nix-profile
用您的符号链接切换符号链接./result
.
2.C
nix-shell
实际上更接近nix-build
命令.那么让我先解释一下是nix-build
做什么的.
nix-build
用于构建.nix
文件(也是派生,但为此我将不得不解释派生是什么).您将如何使用的示例nix-build
:
nix-build something.nix
Run Code Online (Sandbox Code Playgroud)
上面的命令会产生一个./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
.这将检查您当前的系统/项目是否存在当前漏洞(CVE).这使得nix与其他人相比脱颖而出,特别是因为它易于使用(没有企业设置).
我为nix找到的另一个用例是使用dockerTools帮助程序构建可重现的docker镜像.
归档时间: |
|
查看次数: |
881 次 |
最近记录: |