Skip to content
EntityQ18968627· pop 17· linked from 530 articles

Also known as Guix

GNU系統的純函數式軟體包管理程式

Source code

[[ Guix]] (IPA: /​ɡiːks/) is a purely functional package manager, and associated free software distribution, for the [[ system]]. In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix does remote procedure calls (RPCs) to the build daemon (the =guix-daemon= command), which in turn performs builds and accesses to the store on its behalf. The RPCs are implemented in the (guix store) module. Please email mailto:[email protected] for questions. Bug reports should be submitted via Email mailto:[email protected] for general issues regarding the GNU system. GNU Guix is based on [[ Nix package manager]]. It implements the same package deployment paradigm, and in fact it reuses some of its code. Yet, different engineering decisions were made for Guix, as described below. Nix is really two things: a package build tool, implemented by a library and daemon, and a special-purpose programming language. GNU Guix relies on the former, but uses Scheme as a replacement for the latter. Using Scheme instead of a specific language allows us to get all the features and tooling that come with Guile (compiler, debugger, REPL, Unicode, libraries, etc.) And it means that we have a general-purpose language, on top of which we can have embedded domain-specific languages (EDSLs), such as the one used to define packages. This broadens what can be done in package recipes themselves, and what can be done around them. Technically, Guix makes remote procedure calls to the ‘nix-worker’ daemon to perform operations on the store. At the lowest level, Nix “derivations” represent promises of a build, stored in ‘.drv’ files in the store. Guix produces such derivations, which are then interpreted by the daemon to perform the build. Thus, Guix derivations can use derivations produced by Nix (and vice versa). With Nix and the [[ distribution, package composition happens at the Nix language level, but builders are usually written in Bash. Conversely, Guix encourages the use of Scheme for both package composition and builders. Likewise, the core functionality of Nix is written in C++ and Perl; Guix relies on some of the original C++ code, but exposes all the API as Scheme.

Excerpt from the source-code README · 5,476 chars · not written by Vinony

Wikidata facts

Instance of
free software
Developer
GNU Project
Show 12 more facts
operating system
GNU/Linux
Commons category
GNU Guix
inception
2012-00-00
software version identifier
1.5.0
source code repository URL
salsa.debian.org/debian/guix.git
different from
GNU Guix System
mailing list archive URL
lists.gnu.org/archive/html/bug-guix
IRC channel URL
irc://irc.freenode.net/guix
programmed in
C
user manual URL
guix.gnu.org/manual
Sources (15)

via Wikidata · CC0

Article · 中文

GNU Guix(/ɡiːks/)是一个跨平台的包管理器,也是一个用于实例化和管理类Unix操作系统的工具。其基于Nix包管理器与,只提供自由软件。 GNU Guix是GNU/Linux发行版的默认包管理器。 与传统的包管理器不同,Guix(如Nix一样)采用了纯功能部署模式,软件被安装到通过密码散列生成的唯一的目录中。每个软件的依赖都包含在哈希当中,解决了依赖地狱的问题。 这种包管理方法更有可能产生更可靠、可复制和可移植的包。 Guix 中的包使用一种专用的,名为Guile Scheme API的语言来进行定义。依赖通过被称为“派生”的特殊值在这种语言中被跟踪,这些值将被Guix进程评估。Guix 会跟踪这些值,以便在没有其他软件包依赖它们时,可以被删除。以更大的存储需求为代价,Guix保证其所有操作是原子操作并可被回滚。 GNU Guix的开发与GNU Guix System交织在一起(直到Guix 1.0:Guix系统发行版[GuixSD])。GNU Guix System是一个使用Hurd内核和GNU Shepherd init系统的完整的GNU系统。 该项目由志愿者团队在互联网上协调,并由法国非营利组织Guix Europe负责。

Abstract from DBpedia / Wikipedia · CC BY-SA