Guix

維基百科,自由的百科全書
(重新導向自Guix System
跳至導覽 跳至搜尋
GNU Guix
File:Guix logo.svg
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    源代碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    編程語言Guile Scheme, C++Nix核心)
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      許可協議GPLv3+
      網站guix.gnu.org

      GNU Guix/ɡks/[1])是一個跨平台的包管理器,也是一個用於實例化和管理類Unix操作系統的工具。其設計靈感與部分源碼來自Nix,部分組件使用GNU Guile進行編寫。默認情況下只提供自由的軟件包[2] GNU Guix是GNU Guix System的默認包管理器。[3][4][5]

      GNU Guix的開發與GNU Guix System交織在一起。[3]Guix System是一個默認使用GNU HurdGNU Linux-libre內核,GNU Shepherd英語GNU Shepherd init的完整GNU操作系統[4][5]

      歷史

      這個項目由一個GNU Guile黑客Ludovic Courtès於2012年發起。[6]據Guix開發者在2022年十周年紀念博客里的解釋,取「Guix」這個名稱是為了致敬Nix與Guile[7],因為Guix項目最開始就是把兩者混合在一起的。

      原理[編輯]

      與傳統的包管理器不同,Guix(如Nix一樣)採用了純函數式的部署模型,軟件被安裝到通過密碼散列函數生成的唯一的目錄中。每個軟件的所有依賴都作為每個密碼散列函數的輸入,解決了依賴地獄的問題。[8] 這種包管理方法更有可能產生更可靠、可複製和可移植的包。[9][10]

      Guix中的軟件包使用Guile進行定義。[11]包依賴通過被稱為「deriviation」(推導值)的特殊值在Guile中被跟蹤,這些值將被Guix進程進行推導;Guix會跟蹤這些值,以便在沒有其他軟件包依賴它們時,讓其可以被刪除。以更大的存儲需求為代價,Guix保證其所有操作是原子操作,因此可被回滾[11];例外是若使用sudo guix gc --verify=contents,repair進行修復,會破壞線性一致性導致無法回滾[12]

      GNU Guix System (操作系統)[編輯]

      GNU Guix System
      File:Guix logo.svg
      運行着Xfce桌面環境, GNU IceCat瀏覽器和GNU Emacs的Guix System
      運行着Xfce桌面環境, GNU IceCat瀏覽器和GNU Emacs的Guix System
      開發者GNU計劃
      編程語言GNU GuileC++Shell
      作業系統家族類Unix
      源碼模式開放源代碼
      當前版本
        Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
        市場取向桌面計算機筆記本電腦服務器嵌入式開發板
        內核類別宏內核(使用GNU Linux-libre時)或微內核(使用GNU Hurd時)
        使用者空間默認為GNU
        許可證
          Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
          官方網站{{URL|example.com|可选的显示文本}}Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
          倉庫
          • {{URL|example.com|可选的显示文本}}
          Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)

          參考資料[編輯]

          1. ^ GNU Guix Reference Manual. www.gnu.org. [2018-04-23]. (原始內容存檔於2018-12-23). 
          2. ^ Ludovic Courtès. Functional Package Management with Guix. Madrid, Spain: European Lisp Symposium. 2013 [2021-01-27]. (原始內容存檔於2015-02-05). 
          3. ^ 3.0 3.1 What to call Guix? (郵件列表). gnu-system-discuss. 2015-01-15 [2021-01-27]. (原始內容存檔於2020-08-07). 
          4. ^ 4.0 4.1 Programming Interface (GNU Guix Reference Manual). [2021-01-27]. (原始內容存檔於2019-06-02). 
          5. ^ 5.0 5.1 Guix: A New Package Manager & GNU Distribution - Phoronix. [2021-01-27]. (原始內容存檔於2015-02-02). 
          6. ^ Courtès, Ludovic. GNU Guix launches. LWN.net. 2012-11-25 [2025-06-17] (English). 
          7. ^ Edge, Jake. 10 years of stories behind Guix (Guix blog). LWN.net. 2022-04-18 [2025-09-13] (en-US). 
          8. ^ Prins, P., Suresh, J. and Dolstra, E., "Nix fixes dependency hell on all Linux distributions,"頁面存檔備份,存於網際網路檔案館linux.com, December 22, 2008
          9. ^ 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.
          10. ^ Dolstra, E. The Purely Functional Software Deployment Model.頁面存檔備份,存於網際網路檔案館) PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
          11. ^ 11.0 11.1 GNU's advanced distro and transactional package manager — GNU Guix. guix.gnu.org. [2021-01-29]. (原始內容存檔於2021-01-27). 
          12. ^ Guix文檔貢獻者. Invoking guix gc. Guix(devel) Manual. 2025-09-10 [2025-09-10] (English).