【问题标题】:nix user packages vs system packagesnix 用户包 vs 系统包
【发布时间】:2015-07-19 20:07:09
【问题描述】:

我将Vagrant + virtualBoxDebian 8 / Ubuntu 图像用于我的开发环境。

我想使用nix 进行配置,但我无法让nixOS 完全正常工作(即网络、配置...),但我非常乐意切换。所以我回退到nix + Debian 8nix + Ubuntu 来模仿生产服务器。

我不太明白user packagessystem packages 之间的区别以及在我的上下文中更适合使用什么,以便能够将其重用于生产服务器。

我应该使用nix -i 安装软件包,还是编辑configuration.nix 文件?

【问题讨论】:

    标签: nix


    【解决方案1】:

    您是否应该将软件包安装到系统配置文件或用户配置文件中取决于您想要实现的目标。没有唯一的正确答案。相反,这两种类型的安装包各有优缺点。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      相关资源
      最近更新 更多