3

我在开发环境中使用Vagrant+virtualBoxDebian 8/Ubuntu图像。

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

为了能够将其重用到生产服务器中,我无法完全理解在我的上下文中最好使用和之间的区别user packagessystem packages

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

4

1 回答 1

8

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

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

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

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

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

于 2015-11-19T15:37:03.990 回答