跳至內容

Guix

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
GNU Guix
目前版本
  • 1.5.0(2026年1月22日;穩定版本)[1][2]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言Guile Scheme, C++Nix核心)
特許條款GPLv3+
網站guix.gnu.org

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

GNU Guix的開發與GNU Guix System交織在一起。[5]Guix System是一個預設使用GNU HurdGNU Linux-libre內核,GNU Shepherd英語GNU Shepherd init的完整GNU作業系統[6][7]

該專案由志願者團隊在互聯網上協調,並由法國非牟利組織Guix Europe負責財務管理等。[8]

歷史

[編輯]

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

原理

[編輯]

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

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

GNU Guix System (作業系統)

[編輯]
GNU Guix System
執行着Xfce桌面環境, GNU IceCat瀏覽器和GNU Emacs的Guix System
執行着Xfce桌面環境, GNU IceCat瀏覽器和GNU Emacs的Guix System
開發者GNU計劃
程式語言GNU GuileC++Shell
作業系統家族類Unix
原始碼模式開放原始碼
目前版本
  • 1.5.0(2026年1月22日;穩定版本)[1][2]
編輯維基數據連結
市場取向桌面電腦手提電腦伺服器嵌入式開發板
內核類別整塊性核心(使用GNU Linux-libre時)或微內核(使用GNU Hurd時)
用戶空間預設為GNU
特許條款 編輯維基數據連結
官方網站guix.gnu.org 編輯維基數據連結
倉庫 編輯維基數據連結

參考資料

[編輯]
  1. ^ 1.0 1.1 GNU Guix 1.5.0 released. 2026年1月23日. 
  2. ^ 2.0 2.1 "guix-1.5.0 released [stable"]; 作者姓名字串: Efraim Flashner; 作品或名稱的語言: 英語; 出版日期: 2026年1月23日; 檢索日期: 2026年1月24日.
  3. ^ GNU Guix Reference Manual. www.gnu.org. [2018-04-23]. (原始內容存檔於2018-12-23). 
  4. ^ Ludovic Courtès. Functional Package Management with Guix. Madrid, Spain: European Lisp Symposium. 2013 [2021-01-27]. (原始內容存檔於2015-02-05). 
  5. ^ 5.0 5.1 What to call Guix? (郵寄清單). gnu-system-discuss. 2015-01-15 [2021-01-27]. (原始內容存檔於2020-08-07). 
  6. ^ 6.0 6.1 Programming Interface (GNU Guix Reference Manual). [2021-01-27]. (原始內容存檔於2019-06-02). 
  7. ^ 7.0 7.1 Guix: A New Package Manager & GNU Distribution - Phoronix. [2021-01-27]. (原始內容存檔於2015-02-02). 
  8. ^ guix-europe. git.savannah.gnu.org. [2019-05-16]. (原始內容存檔於2021-01-24). 
  9. ^ Courtès, Ludovic. GNU Guix launches. LWN.net. 2012-11-25 [2025-06-17] (英語). 
  10. ^ Edge, Jake. 10 years of stories behind Guix (Guix blog). LWN.net. 2022-04-18 [2025-09-13] (美國英語). 
  11. ^ Prins, P., Suresh, J. and Dolstra, E., "Nix fixes dependency hell on all Linux distributions,"頁面存檔備份,存於互聯網檔案館linux.com, December 22, 2008
  12. ^ 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.
  13. ^ Dolstra, E. The Purely Functional Software Deployment Model.頁面存檔備份,存於互聯網檔案館) PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
  14. ^ 14.0 14.1 GNU's advanced distro and transactional package manager — GNU Guix. guix.gnu.org. [2021-01-29]. (原始內容存檔於2021-01-27). 
  15. ^ Guix文件貢獻者. Invoking guix gc. Guix(devel) Manual. 2025-09-10 [2025-09-10] (英語).