We are pleased to announce the release of GNU Guix version 1.0.1. This new version fixes bugs in the graphical installer for the standalone Guix System.
The release comes with ISO-9660 installation
a virtual machine
and with tarballs to install the package manager on top of your
GNU/Linux distro, either from
Guix users can update by running
It’s been just over two weeks since we announced 1.0.0—two weeks and 706 commits by 40 people already!
This is primarily a bug-fix release, specifically focusing on issues in the graphical installer for the standalone system:
- The most embarrassing bug
would lead the graphical installer to produce a configuration where
%base-packageswas omitted from the
packagesfield. Consequently, the freshly installed system would not have the usual commands in
ps, etc.—and Xfce would fail to start for that reason. See below for a “post-mortem” analysis.
wpa-supplicantservice would sometimes fail to start in the installation image, thereby breaking network access; this is now fixed.
- The installer now allows you to toggle the visibility of passwords and passphrases, and it no longer restricts their length.
- The installer can now create Btrfs file systems.
network-manager-appletis now part of
%desktop-services, and thus readily usable not just from GNOME but also from Xfce.
NEWSfile has more details, but there were also minor bug fixes for
guix search, and
A couple of new features were reviewed in time to make it into 1.0.1:
guix system docker-imagenow produces an OS image with an “entry point”, which makes it easier to use than before.
guix system containerhas a new
--networkoption, allowing the container to share networking access with the host.
- 70 new packages were added and 483 packages were updated.
- Translations were updated as usual and we are glad to announce a 20%-complete Russian translation of the manual.
Recap of bug #35541
The 1.0.1 release was primarily motivated by bug
#35541, which was reported
shortly after the 1.0.0 release. If you installed Guix System with the
chances are that, because of this bug, you ended up with a system where
all the usual GNU/Linux commands—
ps, etc.—were not in
$PATH. That in turn would also prevent Xfce from starting, if you
chose that desktop environment for your system.
We quickly published a note in the system installation instructions explaining how to work around the issue:
First, install packages that provide those commands, along with the text editor of your choice (for example,
guix install coreutils findutils grep procps sed emacs vim
At this point, the essential commands you would expect are available. Open your configuration file with your editor of choice, for example
emacs, running as root:
sudo emacs /etc/config.scm
packagesfield to add the “base packages” to the list of globally-installed packages, such that your configuration looks like this:
(operating-system ;; … snip … (packages (append (list (specification->package "nss-certs")) %base-packages)) ;; … snip … )
Reconfigure the system so that your new configuration is in effect:
guix pull && sudo guix system reconfigure /etc/config.scm
If you already installed 1.0.0, you can perform the steps above to get all these core commands back.
Guix is purely declarative: if you give it an operating system
where the “base packages” are not available
then it goes ahead and installs precisely that. That’s exactly what
happened with this bug: the installer generated such a configuration and
passed it to
guix system init as part of the installation process.
Technically, this is a “trivial” bug: it’s fixed by adding one line to your operating system configuration and reconfiguring, and the fix for the installer itself is also a one-liner. Nevertheless, it’s obviously a serious bug for the impression it gives—this is not the user experience we want to offer. So how did such a serious bug go through unnoticed?
For several years now, Guix has had a number of automated system
running in virtual machines (VMs). These tests primarily ensure that
work as expected, but some of them specifically test system
installing to a RAID or encrypted device, with a separate
Btrfs, etc. These tests even run on our continuous integration
service (search for the
“tests.*” jobs there).
Unfortunately, those installation tests target the so-called “manual” installation process, which is scriptable. They do not test the installer’s graphical user interface. Consequently, testing the user interface (UI) itself was a manual process. Our attention was, presumably, focusing more on UI aspects since—so we thought—the actual installation tests were already taken care of by the system tests. That the generated system configuration could be syntactically correct but definitely wrong from a usability viewpoint perhaps didn’t occur to us. The end result is that the issue went unnoticed.
The lesson here is that: manual testing should also look for issues in “unexpected places”, and more importantly, we need automated tests for the graphical UI. The Debian and Guix installer UIs are similar—both using the Newt toolkit. Debian tests its installer using “pre-seeds” (code), which are essentially answers to all the questions and choices the UI would present. We could adopt a similar approach, or we could test the UI itself at a lower level—reading the screen, and simulating key strokes. UI testing is notoriously tricky so we’ll have to figure out how to get there.
Our 1.0 party was a bit spoiled by this bug, and we are sorry that installation was disappointing to those of you who tried 1.0. We hope 1.0.1 will allow you to try and see what declarative and programmable system configuration management is like, because that’s where the real value of Guix System is—the graphical installer is icing on the cake.
Join us on
#guix and on the mailing
About GNU Guix
GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the kernel Linux, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.
In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.