GUIX简单介绍

首先,GNU Guix是GNU系统的一个包管理器。Gux可以使非特权用户安装、升级、卸载、回滚到之前的软件包集合、从源代码构建软件包变得非常简单。对于构建和维护软件环境非常有帮助。

Guix提供有命令行的包管理接口1、Utilities命令集和编程语言Scheme的接口2。它的后台守护进程负责代替用户去构建软件包、从通过验证的源3去下载预编译软件包。

我们可以在现有的GNU/Linux中安装Guix来补充现有工具集,而且不会影响其他工具的使用。或者可以在Guix发行版本(GuixSD)中使用。在GNU GuixSD中,我们只需要去定义系统的配置文件,Guix就能以事务性、可复制和无状态的方式去实例化我们的配置4

在低层方面,Guix实现了Nix的功能包管理规则。在Guix中,软件包的构建和安装从数学意义上看起来就像是一个函数。这个函数接受像构建脚本、编译器和库并返回已安装的软件包。做为纯函数,它的结果完全取决与它的输入。比如,它不能引用未在输入中显示传递的脚本或软件。当传递给定的输入集时,构建函数总是会以同样的结果做为输出。它不会使用任何方式去改变运行时系统的环境变量。比如,它不会创建、修改或删除自己构建和安装目录之外的一切文件。这是因为构建过程是在一个独立的环境(或容器)中运行的,这些环境中只有显示的输入是可见(操作)的。

软件包构建的结果会缓存在文件系统中叫做store的特殊目录中。每个软件包都会安装在store中自己的目录中,默认情况下store的目录是/gnu/store。每个软件包的目录名中都包含构建它时所有输入的Hash值,这样改变输入中的任何一点都会有不同的软件包目录名产生。

Guix的主要特性有:支持事务性的软件包升级和回滚、非特权用户安装和安装包的垃圾回收5

Footnotes:

1

guix package

2

Programming Interface

3

Substitutes

4

System Configuration

5

Features

Date: 2018-03-22 Thu 13:20

Author: xshumeng

Email: xue.shumeng@yahoo.com

Created: 2023-08-28 Mon 14:16