Nix 是一個作業系統包管理器。同 RPMAPT 和許多其它的軟體包管理系統一樣,它可以用來控制軟體包的安裝,或已命名的,帶版本號的文件組,例如軟體應用及其相關的配置數據等。[2][3][4]

Nix 包管理器
首次發布2003年6月15日,​21年前​(2003-06-15
當前版本
  • 2.22.1(2024年5月10日;穩定版本)[1]
編輯維基數據鏈接
原始碼庫 編輯維基數據鏈接
程式語言C, C++, Perl
平台Linux, Unix-like
類型軟體包管理系統
許可協議LGPL
網站nixos.org/nix

Nix 包採用一種專門設計的,惰性求值純函數式語言進行配置;Shell 腳本或其它外部程序(如 Make)可用於從源碼構建包。此系統的純函數式性質能夠保證非常精準的依賴跟蹤。例如,一個二進制包依賴於對應的源碼包、編譯器和其它用於構建的包。密碼散列函數確定了每個包的精確構建和運行時依賴,而每個源碼或二進位包都以一個這樣的散列值表示。其結果就是,二進制包倉庫成為了包管理器基本操作透明性的優化(類似幹於通過密碼散列函數來「緩存」)。

依賴問題通過功能上等價於硬連結的一套系統來解決,若軟體的某個版本被某個包所依賴,那麼僅當沒有包依賴於它之前,它都不會被移除。這會導致需要更多的存儲空間,但可以保證所有升級的安全性(保證不會破壞現有的應用)和原子性。它也允許任何包的多個版本,包括參數化地包含某一特性的包同時存在而沒有衝突。

Nix 在安裝包時依賴於自身的目錄結構。所有的包均會被安裝到 nix 目錄的子目錄中。在命名文件夾時,一個包的不同版本會根據包的 hash 加以區分。

此外,Nix 可作為現有系統(例如 GNU/Linux 發行版)的包管理器使用。除了嚴格意義上的軟體包外,Nix 也可被用於維護任何類型的文件配置,如伺服器的配置等。

NixOS[5] 是一個 Linux發行版,它採用 Nix 來管理作業系統中包括 Linux 內核的所有部分。[6]

參見

編輯

參考文獻

編輯
  1. ^ Release 2.22.1. 2024年5月10日 [2024年5月17日]. 
  2. ^ Prins, P., Suresh, J. and Dolstra, E., "Nix fixes dependency hell on all Linux distributions,"頁面存檔備份,存於網際網路檔案館linux.com, December 22, 2008
  3. ^ Dolstra, E., de Jonge, M. and Visser, E. "Nix: A Safe and Policy-Free System for Software Deployment."頁面存檔備份,存於網際網路檔案館) In Damon, L. (Ed.), 18th Large Installation System Administration Conference (LISA '04)頁面存檔備份,存於網際網路檔案館, pages 79–92, Atlanta, Georgia, USA. USENIX, November 2004.
  4. ^ Dolstra, E. The Purely Functional Software Deployment Model.頁面存檔備份,存於網際網路檔案館) PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
  5. ^ 存档副本. [2018-01-01]. (原始內容存檔於2018-01-09). 
  6. ^ Dolstra, E. and Löh, A. "NixOS: A Purely Functional Linux Distribution頁面存檔備份,存於網際網路檔案館)." In ICFP 2008: 13th ACM SIGPLAN International Conference on Functional Programming頁面存檔備份,存於網際網路檔案館), pages 367–378, Victoria, British Columbia, Canada. September 2008.

外部連結

編輯