gpt4 book ai didi

nix - 在多台机器上挂载相同的/nix 目录

转载 作者:行者123 更新时间:2023-12-04 14:57:02 33 4
gpt4 key购买 nike

我想在相同架构的多台 openSUSE 机器(不同版本)上使用 nix-package manager 一致地安装软件。我不是任何系统的 root,但想说服我们的系统管理员在所有使用网络挂载的机器上以多用户模式安装 nix

  • 是否可以在所有机器上挂载相同的 /nix 目录并在所有这些机器上以多用户模式运行 nix?
  • nix-env -i 会干扰其他机器吗?
  • nix-env -i xxx 会在所有机器的用户配置文件中安装 xxx 还是仅在执行命令的机器上安装?由 root 安装的那些呢?
  • 一台机器上的垃圾收集是否考虑到其他机器上安装的软件?
  • 最佳答案

  • 可以在多台机器上安装 Nix 存储,以便在具有相似架构的许多主机之间共享二进制文件。如果 /nix在所有这些机器上都可用,那么它们中的每一个都可以以几乎与在本地安装它们的方式相同的方式使用已安装的包。
    现在,只有当您的底层网络文件系统正确支持网络范围的文件锁定时,让多台机器同时写入同一个 Nix 存储才能可靠地工作。这听起来可能无害,但根据我的经验,大多数网络文件系统实际上并不支持正确的文件锁定,我的猜测是,如果你尝试这个壮举,那么你偶尔会遇到死锁和/或不一致的商店。
  • nix-env -i — 和所有其他 nix-xxx命令是通用的——同步访问/nix/store中的所有资源和 /nix/var ,因此多个运行的操作不会相互干扰(假设文件系统提供了可靠的同步)。如果单个用户运行 nix-env -i同时在两台机器上,那么他显然会遇到竞争条件,因为这两个命令中的一个会抵消另一个的影响。当您运行两个 nix-env -i 时,这种现象会以同样的方式发生。不过,也可以在单台机器上同时执行命令,因此这不是共享存储所特有的问题。
  • nix-env -i同时修改所有主机上的用户环境。用户个人资料 ~foo/.nix-profile只是到 /nix/var/nix/profiles/per-user/foo/profile 的共享存储的符号链接(symbolic link),因此在一台机器上对该配置文件所做的更改也将在所有其他机器上可见。 root在这方面就像任何其他用户一样。
  • 是的,nix-collect-garbage在共享商店的任何机器上都可以正常工作。由于用户配置文件也是共享的,因此该工具可以看到完整的使用/依赖关系图,并且不会对仍被用户配置文件引用的存储路径进行垃圾收集。
    然而,另一件事是临时环境,例如为 nix-shell 创建的环境。或通过 nix-build . Nix 通过来自 /nix/var/nix/gcroots 的符号链接(symbolic link)记录这些环境的存在。到本地硬盘上的相应路径,即临时环境所在的地方。如果该符号链接(symbolic link)变得陈旧,即如果 Nix 环境的“真实路径”消失,则这种环境被认为是死的。现在,如果用户输入 nix-shell机器 A 上的环境,那么将在 /nix/var/nix/gcroots 中创建一个符号链接(symbolic link)指向,比如说/run/user/1000/nix-shell-environment-1 .然而,在机器 B 上运行的垃圾收集器不会找到该路径,并将认为环境已死,因此从 /nix/var/nix/gcroots 中删除符号链接(symbolic link)。以及来自 /nix/store 的底层存储路径.如果发生这种情况,那么事件的 nix-shell在 A 上运行的环境将突然停止工作。
  • 关于nix - 在多台机器上挂载相同的/nix 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433501/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com