代码之家  ›  专栏  ›  技术社区  ›  nha

nix用户包与系统包

nix
  •  5
  • nha  · 技术社区  · 10 年前

    我使用 Vagrant + virtualBox 和一个 Debian 8 / Ubuntu 我的开发环境的映像。

    我想用 nix 用于资源调配,但我无法 nixOS 完全正确地工作(即网络、资源调配…),但我非常乐意切换。所以我要回到 nix + Debian 8 nix + Ubuntu 以模拟生产服务器。

    我不太明白两者之间的区别 user packages system packages 以及在我的环境中最好使用什么,以便能够将其重新用于生产服务器。

    我是否应该使用 nix -i ,或编辑 configuration.nix 文件

    1 回复  |  直到 10 年前
        1
  •  10
  •   Peter Simons    9 年前

    您应该将软件包安装到系统配置文件中还是安装到用户配置文件中取决于您希望实现的目标。没有一个正确的答案。相反,两种类型的安装软件包有不同的优点和缺点。

    系统包在全局配置文件中定义,该文件通常位于 /etc/nixos/configuration.nix .除以外的用户 root 通常无法编辑该文件,因此无法从列表中添加或删除包。中定义的包将作为 nixos-rebuild 他们将在 $PATH 系统的每个用户。然而,如果这些包中的任何一个由于某种原因无法编译,那么您就无法重建系统,也就是说,您可能会发现自己处于无法更新内核的情况,例如, nano 无法编译。关注 master Nixpkgs-git存储库的分支可能经常遇到这个问题,但对于 unstable release-x.y 频道。

    用户包可以由系统上的任何用户安装、更新和卸载,而无需超级用户权限。一个用户的包对另一个用户不可见(除非她有意识地将其导入 $路径 ). 因此,两个用户可以安装同一软件包的两个不同版本。

    如果用户没有定期更新她的个人资料,那么您将在Nix商店中积累无法垃圾收集的旧包。这可能是一个问题或功能,具体取决于您如何看待它。另一方面,每次更新系统时,系统软件包都会更新,因此这些软件包占用的磁盘空间往往较小。

    就我个人而言,我更喜欢尽可能缩小我的系统配置文件;我将软件包主要安装到用户配置文件中 nix-env 。然而,我认识很多人,他们做的恰恰相反,我们都相处得很好