GNU Guix 1.1 package manager and distribution based on it available

Took place package manager release GNU Guix 1.1 and the GNU/Linux distribution built on top of it. For loading formed images for installation on USB Flash (241 Mb) and use in virtualization systems (479 ​​Mb). Work is supported on i686, x86_64, armv7 and aarch64 architectures.

The distribution kit allows installation both as standalone OS in virtualization systems, in containers and on conventional equipment, and Launching in already installed GNU/Linux distributions, acting as a platform for deploying applications. The user is provided with functions such as dependency accounting, repeatable builds, work without root, rollback to previous versions in case of problems, configuration management, environment cloning (creating an exact copy of the software environment on other computers), etc.

All innovations:

  • A new "guix deploy" command has been added, designed to deploy the stuffing of several computers at once, for example, new environments in VPS or remote systems accessible via SSH.
  • Authors of third-party package repositories (channels) are provided with the means to write news messages that the user can read when running the "guix pull --news" command.
  • Added the "guix system describe" command, which makes it possible to evaluate changes between two different system instances during deployment.
  • Support for generating images for Singularity and Docker has been added to the "guix pack" command.
  • Added "guix time-machine" command to rollback to any archived package release Heritage software.
  • Added "--target" option to "guix system" to provide partial cross-compilation support;
  • Ensured Guix execution using Guile 3, which has a positive effect on performance.
  • The package dependency graph is limited to a reduced set of binary source assembly components (seed), which is a big step towards the implementation of fully verifiable bootstrap (bootstrap).
  • Implemented a framework for automated testing of a graphical installer. The installer is now built in a continuous integration system and tested in different configurations (encrypted and regular root partition, installation with desktops, etc.).
  • Build systems for Node.js, Julia, and Qt have been added to make it easier to write packages for applications related to these projects.
  • Added new system services auditd, fontconfig-file-system, getmail, gnome-keyring, kernel-module-loader,
    knot-resolver, mumi, nfs, nftables, nix, pagekite, pam-mount, patchwork,
    polkit-wheel, provenance, pulseaudio, sane, singularity, usb-modeswitch

  • Updated software versions in 3368 packages, added 3514 new packages. This includes xfce 4.14.0, gnome 3.32.2, mate 1.24.0, xorg-server 1.20.7, bash 5.0.7, binutils 2.32, cups 2.3.1, emacs 26.3, enlightenment 0.23.1,
    gcc 9.3.0, gimp 2.10.18, glibc 2.29,
    gnupg 2.2.20, go 1.13.9, guile 2.2.7,
    icecat 68.7.0-guix0-preview1, icedtea 3.7.0,
    libreoffice 6.4.2.2, linux-libre 5.4.31, openjdk 12.33, perl 5.30.0, python 3.7.4,
    rust 1.39.0.

Recall that the GNU Guix package manager is based on the developments of the project nix and in addition to the typical package management functions, it supports such features as transactional updates, the ability to roll back updates, work without obtaining superuser privileges, support for profiles associated with individual users, the ability to simultaneously install several versions of one program, garbage collection tools (identifying and removing unused versions of packages ). To define application build scripts and packaging rules, it is proposed to use a specialized high-level domain-specific language and Guile Scheme API components that allow you to perform all package management operations in the Scheme functional programming language.

The ability to use packages prepared for the Nix package manager and placed in the repository is supported
Nixpkgs. In addition to package operations, you can create scripts to manage application configuration. When a package is built, all associated dependencies are automatically downloaded and built. It is possible both to download ready-made binary packages from the repository, and build from source with all dependencies. Implemented tools to keep versions of installed programs up to date by organizing the installation of updates from an external repository.

The build environment for packages is formed as a container containing all the components necessary for the operation of applications, which allows you to create a set of packages that can work without regard to the composition of the base system environment of the distribution, in which Guix is ​​used as an add-on. Dependencies can be determined between Guix packages by scanning the hash identifiers in the directory of installed packages to find the presence of already installed dependencies. Packages are installed in a separate directory tree or subdirectory in the user's directory, which allows it to coexist with other package managers and provide support for a wide range of existing distributions. For example, a package is installed as /nix/store/f42a5878f3a0b426064a2b64a0c6f92-firefox-75.0.0/ where "f42a58..." is the unique package identifier used to control dependencies.

The distribution includes only free components and comes with a GNU Linux-Libre kernel stripped of non-free binary firmware elements. GCC 9.3 is used to build. The service manager is used as the initialization system GNU Shepherd (ex dmd) developed as an alternative to SysV-init with dependency support. The control daemon and Shepherd utilities are written in the Guile language (one of the implementations of the Scheme language), which is also used to define service startup parameters. The base image supports console mode, but to install prepared 13162 prepackaged packages, including X.Org-based graphics stack components, dwm and ratpoison window managers, the Xfce desktop, and a selection of graphics applications.

Source: opennet.ru

Add a comment