什么是 GUIX?

Guix 是 GNU 操作系统的一个发行版,由 GNU 工程开发。它尊 重计算机用户的自由,它支持透明和可重建操作系统,它支持使用 Guile Scheme 进行软件 包定义和系统定制。

你可以按照独立发行版来使用 Guix,也可以在你常用的发行版之上使用 Guix 作为包管理 系统——完全享用 Guix 带来的益处,而不影响原来的系统。

为什么需要可重建系统和可重复计算?

分享知识是保证人类生存和促使人类繁荣的道德底线和基本原则。无论是造纸和印刷术的发 明,还是磁带和光盘的出现,都是人类分享知识之渴望的具体实现。分享知识的基础就是知 识的可信性——某个人分享的知识能够被其他人独立地重复和运用。

人类进入信息时代,许多知识的分享依赖于计算机系统——计算机硬件、计算机基础系统和计 算机软件。由于系统复杂程度越来越高,软件更新越来越快,软件之间的依赖越来越复杂, 许多时候人们无法保证——即使在同样的系统下——他们能够完全重复一个以前的计算结果。因 为软件可能有更新、有的工具已经被删除、部分代码库做过重新编译等等都会导致以前的计 算结果无法再重现。

这是一个很大的问题!Guix 的可重建包管理模式正是改进可重复计算困境的利器——它已经 在帮助许多进行高性能计算的研究机构创建可重建软件系统和用户可控的软件系统。

Guix 使用函数式包管理

大家都知道函数式编程语言(Functional Programming Language)编写的程序只要给定同 样的输入值,保证会输出同样的结果——而且没有副作用。Guix 正是借鉴了这样的特点,使 用函数式编程语言 Guile Scheme(GNU 系统的通用扩展语言)开发了函数式包管理系统。

正如 Guix 手册中所言,使用 Guix,包的创建和安装是数学意义上的函数。函数的输入是 构建脚本、编译器和库;函数的输出是一个安装包。输入决定输出,整个过程不会对系统环 境做任何改变:不会在其安装路径之外创建、修改或删除任何文件——函数的运行过程是在一 个隔离的环境(容器)中进行的,每个包都使用独立的安装路径(默认是 /gnu/store/ ),并且路径名称根据输入进行哈希值计算,所以不同的输入会产生不同的安装路径。

值得注意的是,安装包并不是孤立的存在,它们可以被所有用户共享。每个用户有自己独立 的配置,用户配置是一个 store 链接的集合。这样,不同的用户就可以使用不同的 GCC 版本,而同一个 GCC 版本只需构建一次。整个配置就是用 Guile Scheme 编写的包管理菜 单,每个 Schemer 都会很开心地修改。

Guix 的用户不再依赖于系统管理员提供的软件包管理,反之,每个用户都有自由定义自己 的软件包。这就使系统构建不再有中心依赖,使计算可重复性需要的工具可重建性成为现实。 让人们使用软件自由分享知识成为现实。

Guix 标识——Copyright © 2015 Luis Felipe López Acevedo(Creative Commons Attribution-ShareAlike 4.0 International License.)