GNU Guix 1.4 包管理器和基于它的分发可用

GNU Guix 1.4 包管理器和基于其构建的 GNU/Linux 发行版发布。 为了供下载,已生成用于安装在 USB 闪存 (814 MB) 上并在虚拟化系统 (1.1 GB) 中使用的映像。 支持在 i686、x86_64、Power9、armv7 和 aarch64 架构上运行。

该发行版既可以作为独立操作系统安装在虚拟化系统、容器和传统设备中,也可以在已安装的 GNU/Linux 发行版中启动,充当部署应用程序的平台。 为用户提供考虑依赖性、可重复构建、免root工作、出现问题时回滚到以前版本、配置管理、克隆环境(在其他计算机上创建软件环境的精确副本)等功能。

主要创新:

  • 改进软件环境的管理。 “guix环境”命令已被新的“guix shell”命令取代,它不仅可以为开发人员创建构建环境,还可以使用环境来熟悉程序,而无需反映在配置文件中,也无需执行“ guix 安装”。 例如,要下载并启动 supertuxkart 游戏,您可以运行“guix shell supertuxkart - supertuxkart”。 下载后,该包将保存在缓存中,下次启动不需要重新解压。

    为了简化开发人员环境的创建,“guix shell”提供了对描述环境组成的 guix.scm 和 manifest.scm 文件的支持(可以使用“--export-manifest”选项来生成文件)。 为了创建模拟经典系统目录层次结构的容器,“guix shell”提供了“--container --emulate-fhs”选项。

  • 添加“guix home”命令来控制家庭环境。 Guix 允许您定义家庭环境的所有组件,包括包、服务和以点开头的文件。 使用“guix home”命令,可以在 $HOME 目录或容器中重新创建所描述的主环境的实例,例如,将您的环境转移到新计算机。
  • 在“guix pack”命令中添加了“-f deb”选项,以创建可以安装在 Debian 上的单独 deb 软件包。
  • 为了创建各种类型的系统映像(raw、QCOW2、ISO8660 CD/DVD、Docker 和 WSL2),建议使用通用的“guix system image”命令,它允许您确定创建的映像的存储类型、分区和操作系统。
  • 构建包的命令中添加了“—tune”选项,它允许您指定将启用特定优化的处理器微体系结构(例如,AVX-512 SIMD 指令可以在新的 AMD 和 Intel CPU 上使用) 。
  • 安装程序实现了一种机制,可以在安装失败时自动保存重要的调试信息。
  • 通过在动态链接期间使用缓存,减少了应用程序启动时间,从而减少了搜索库时对 stat 和 open 系统调用的调用。
  • 使用了新版本的 GNU Shepherd 0.9 初始化系统,它实现了临时服务(transient)的概念以及创建由网络活动激活的服务的能力(以 systemd 套接字激活的方式)。
  • 添加了用于在操作系统配置中设置交换分区大小的新界面。
  • 用于设置静态网络配置的界面已经过重新设计,现在提供了 ip 命令风格的声明性设置模拟。
  • 添加了 15 个新的系统服务,包括 Jami、Samba、fail2ban 和 Gitile。
  • 启动了packages.guix.gnu.org 用于包导航。
  • 更新了6573个软件包中的程序版本,新增了5311个软件包。 其中包括 GNOME 42、Qt 6、GCC 12.2.0、Glibc 2.33、Xfce 4.16、Linux-libre 6.0.10、LibreOffice 7.4.3.2、Emacs 28.2 的更新版本。 使用 Python 500 删除了 2 多个包。

GNU Guix 1.4 包管理器和基于它的分发可用

让我们回想一下,GNU Guix 包管理器基于 Nix 项目的开发,除了典型的包管理功能之外,还支持执行事务更新、回滚更新的能力、无需获得超级用户权限即可工作、支持与个人用户相关的配置文件、同时安装一个程序的多个版本的能力、垃圾收集工具(识别和删除未使用的软件包版本)。 为了定义应用程序构建场景和包形成规则,建议使用专门的高级领域特定语言和Guile Scheme API组件,它们允许您在函数式编程语言Scheme中执行所有包管理操作。

支持使用为 Nix 包管理器准备并放置在 Nixpkgs 存储库中的包的能力。 除了对包进行操作之外,还可以创建脚本来管理应用程序配置。 构建包时,会自动下载并构建与其关联的所有依赖项。 可以从存储库下载现成的二进制包,也可以从具有所有依赖项的源文本进行构建。 已经实现了一些工具,通过组织来自外部存储库的更新安装来使已安装程序的版本保持最新。

包的构建环境以容器的形式形成,其中包含应用程序工作所需的所有组件,这允许您创建一组可以工作的包,而无需考虑发行版的基本系统环境的组成,其中Guix被用作附加组件。 可以通过扫描已安装包目录中的标识符哈希值来确定 Guix 包之间的依赖关系,以查找是否存在已安装的依赖关系。 软件包安装在用户目录中的单独目录树或子目录中,使其能够与其他软件包管理器并行共存,并为各种现有发行版提供支持。 例如,软件包安装为 /nix/store/452a5978f3b1b426064a2b64a0c6f41-firefox-108.0.1/,其中“452a59...”是用于依赖项监视的唯一软件包标识符。

该发行版仅包含免费组件,并附带 GNU Linux-Libre 内核,清除了二进制固件的非免费元素。 GCC 12.2 用于组装。 GNU Shepherd 服务管理器(以前称为 dmd)用作初始化系统,是作为具有依赖性支持的 SysV-init 的替代方案而开发的。 Shepherd 控制守护进程和实用程序是用 Guile(Scheme 语言的实现之一)编写的,它也用于定义启动服务的参数。 基本映像支持控制台模式下的工作,但已准备好 20526 个现成的软件包可供安装,包括基于 X.Org 的图形堆栈的组件、dwm 和ratpoison 窗口管理器、GNOME 和 Xfce 桌面,以及精选的图形应用程序。

来源: opennet.ru

添加评论