热门问题
时间线
聊天
视角
Guix
GNU系統的純函數式軟體包管理程式 来自维基百科,自由的百科全书
Remove ads
GNU Guix(/ɡiːks/[2])是一个跨平台的包管理器,也是一个用于实例化和管理类Unix操作系统的工具。Guix的源代码分叉自Nix,部分组件使用GNU Guile进行编写。默认情况下只提供自由的软件包。[3] GNU Guix是GNU Guix System的默认包管理器。[4][5][6]
GNU Guix的开发与GNU Guix System交织在一起。[4]Guix System是一个默认使用GNU Hurd或GNU Linux-libre内核,GNU Shepherd init的完整GNU操作系统。[5][6]
该项目由志愿者团队在互联网上协调,并由法国非营利组织Guix Europe负责财务管理等。[7]
Remove ads
历史
这个项目由一个GNU Guile黑客Ludovic Courtès于2012年发起。[8]据Guix开发者在2022年十周年纪念博客里的解释,取“Guix”这个名称是为了致敬Nix与Guile[9],因为Guix项目最开始就是把两者混合在一起的。
原理
与传统的包管理器不同,Guix(如Nix一样)采用了纯函数式的部署模型,软件被安装到通过密码散列函数生成的唯一的目录中。每个软件的所有依赖都作为每个密码散列函数的输入,解决了依赖地狱的问题。[10] 这种包管理方法更有可能产生更可靠、可复制和可移植的包。[11][12]
Guix中的软件包使用Guile进行定义。[13]包依赖通过被称为“deriviation”(推导值)的特殊值在Guile中被跟踪,这些值将被Guix进程进行推导;Guix会跟踪这些值,以便在没有其他软件包依赖它们时,让其可以被删除。以更大的存储需求为代价,Guix保证其所有操作是原子操作,因此可被回滚[13];例外是若使用sudo guix gc --verify=contents,repair
进行修复,会破坏线性一致性导致无法回滚[14]。
GNU Guix System (操作系统)
参考资料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads