GNU Guix 1.0.1 released
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
images,
a virtual machine
image,
and with tarballs to install the package manager on top of your
GNU/Linux distro, either from
source
or from
binaries.
Guix users can update by running guix pull
.
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-packages
was omitted from thepackages
field. Consequently, the freshly installed system would not have the usual commands in$PATH
—ls
,ps
, etc.—and Xfce would fail to start for that reason. See below for a “post-mortem” analysis. - The
wpa-supplicant
service 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-applet
is now part of%desktop-services
, and thus readily usable not just from GNOME but also from Xfce.- The
NEWS
file has more details, but there were also minor bug fixes forguix environment
,guix search
, andguix refresh
.
A couple of new features were reviewed in time to make it into 1.0.1:
guix system docker-image
now produces an OS image with an “entry point”, which makes it easier to use than before.guix system container
has a new--network
option, 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
graphical
installer,
chances are that, because of this bug, you ended up with a system where
all the usual GNU/Linux commands—ls
, grep
, 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,
emacs
orvim
):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
Change the
packages
field 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
definition
where the “base packages” are not available
system-wide,
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.
Lessons learned
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
tests
running in virtual machines (VMs). These tests primarily ensure that
system
services
work as expected, but some of them specifically test system
installation:
installing to a RAID or encrypted device, with a separate /home
, using
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.
Conclusion
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
lists!
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.
Unless otherwise stated, blog posts on this site are copyrighted by their respective authors and published under the terms of the CC-BY-SA 4.0 license and those of the GNU Free Documentation License (version 1.3 or later, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts).