GNU Guix 1.4 package manager and distribution based on it available

The GNU Guix 1.4 package manager and the GNU/Linux distribution based on it have been released. Images for installation on USB Flash (814 MB) and use in virtualization systems (1.1 GB) have been generated for download. It supports i686, x86_64, Power9, armv7 and aarch64 architectures.

The distribution kit can be installed both as a standalone OS in virtualization systems, in containers and on conventional equipment, and run 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.

Main innovations:

  • Improved software environment management. The “guix environment” command has been replaced by a new “guix shell” command, which allows not only to create build environments for developers, but also to use environments to familiarize yourself with programs without being reflected in the profile and without performing “guix install”. For example, to download and run the game supertuxkart, you can run "guix shell supertuxkart - supertuxkart". Once downloaded, the package will be stored in the cache and the next run will not require re-extracting it.

    To simplify the formation of environments for developers in the “guix shell”, support for the guix.scm and manifest.scm files with a description of the environment composition is provided (the “--export-manifest” option can be used to generate files). To create containers that emulate the classic system directory hierarchy, the "guix shell" offers the options "-container --emulate-fhs".

  • Added "guix home" command to manage home environment. Guix allows you to define all components of the home environment, including packages, services, and files that start with a dot. Using the "guix home" command, instances of the described home environment can be recreated in the $HOME directory or in a container, for example, to transfer one's environment to a new computer.
  • Added "-f deb" option to "guix pack" command to create standalone deb packages that can be installed on Debian.
  • To create various types of system images (raw, QCOW2, ISO8660 CD / DVD, Docker and WSL2), a universal command "guix system image" is proposed, which allows you to determine the type of storage, partitions and operating system for the created image.
  • The "-tune" option has been added to the package assembly commands, which allows you to specify the processor microarchitecture for which specific optimizations will be enabled (for example, AVX-512 SIMD instructions can be used on new AMD and Intel CPUs).
  • The installer implements a mechanism for automatically saving important debugging information in case of an abnormal installation.
  • Reduced application startup time by using dynamic linking cache to reduce the use of stat and open system calls when searching for libraries.
  • A new release of the GNU Shepherd 0.9 initialization system is involved, which implements the concept of temporary services (transient) and the ability to create services that are activated during network activity (in the style of systemd socket activation).
  • A new interface has been added to set the size of the swap partition in the operating system configuration.
  • The interface for setting a static network configuration has been redesigned, which now offers a declarative analogue of settings in the style of the ip command.
  • Added 15 new system services including Jami, Samba, fail2ban and Gitile.
  • Packages.guix.gnu.org site launched for package navigation.
  • Updated software versions in 6573 packages, added 5311 new packages. Among other things, updated versions of 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. Removed over 500 packages using Python 2.

GNU Guix 1.4 package manager and distribution based on it available

Recall that the GNU Guix package manager is based on the developments of the Nix project and, in addition to the typical package management functions, 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 programs, 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 hosted in the Nixpkgs repository is supported. 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/452a5978f3b1b426064a2b64a0c6f41-firefox-108.0.1/ where "452a59..." is a unique package ID 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 12.2 is used to build. The GNU Shepherd service manager (formerly dmd) is used as an initialization system, 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 20526 ready-made packages have been prepared for installation, including X.Org-based graphics stack components, dwm and ratpoison window managers, GNOME and Xfce desktops, and a selection of graphical applications.

Source: opennet.ru

Add a comment