nix用户包与系统包

nha*_*nha 2 nix

我在开发环境中使用了Vagrant+ virtualBoxDebian 8//Ubuntuimage.

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

我不能完全得到之间的区别user packagessystem packages,什么是最好的使用在我的情况下,为了能够重新使用到生产服务器.

我应该使用nix -i或编辑configuration.nix文件来安装软件包吗?

Pet*_*ons 6

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

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

用户软件包可以由系统上的任何用户安装,更新和卸载,而无需超级用户权限.一个用户的包将不会被另一个用户看到(除非她有意识地将它们导入到其中$PATH).因此,两个用户可以安装同一个包的两个不同版本.

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

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