2015-07-19 78 views
2

我使用Vagrant + virtualBoxDebian 8/Ubuntu圖像爲我的開發環境。nix用戶軟件包vs系統軟件包

我想用nix的配置,但我不能讓nixOS工作完全正確(即具有網絡,供應...),但我更樂意進行切換。所以我回落到nix + Debian 8nix + Ubuntu來模仿生產服務器。

我不能完全明白user packagessystem packages之間的區別,以及在我的上下文中使用什麼,以便能夠將其重用到生產服務器中。

我應該用nix -i安裝軟件包還是編輯configuration.nix文件?

回答

5

是否應該將軟件包安裝到系統配置文件或用戶配置文件中取決於您想要實現的功能。沒有單一的正確答案。相反,這兩種安裝包都有不同的優缺點。

系統包在全局配置文件中定義,該文件通常駐留在/etc/nixos/configuration.nix中。 root以外的用戶通常不能編輯該文件,因此無法從列表中添加或刪除軟件包。在此定義的軟件包將作爲nixos-rebuild的一部分進行安裝,它們將在您系統的每個用戶的$PATH中提供。但是,如果任何這些軟件包由於某種原因而無法編譯,那麼您無法重建系統,即您可能發現自己處於無法更新內核的狀況,因爲nano未編譯。遵循Nixpkgs git存儲庫的master分支的用戶可能會頻繁遇到此問題,但對於unstablerelease-x.y渠道的用戶而言,這種情況不會發生太多。

您的系統上的任何用戶都可以安裝,更新和卸載用戶軟件包,而無需超級用戶權限。一個用戶的包不會被其他用戶看到(除非她有意識地將它們導入$PATH)。因此,兩個用戶可以安裝同一個軟件包的兩個不同版本。

如果用戶沒有定期更新自己的個人資料,那麼您會在Nix商店中堆積無法收集垃圾的舊包。這可能是一個問題或功能,取決於你如何看待它。另一方面,系統軟件包在每次更新系統時都會更新,因此這些軟件包通常佔用的磁盤空間更小。

就我個人而言,我寧願保持我的系統配置文件儘可能小;我主要通過nix-env將軟件包安裝到用戶配置文件中。然而,我認識很多人,他們做的恰恰相反,我們都很好。 :-)