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).