Subject: Re: bug#30370: guix system init can't find guix-register

From: Diego Nicola Barbato <[email-masked]>
Date: Thu, 08 Feb 2018 16:59:36 +0100

Hello Ludo,

[email-masked] (Ludovic Courtès) writes:

> Hi Diego,
>
> Diego Nicola Barbato <[email-masked]> skribis:
>
>> I tried to install GuixSD on a loop device (/dev/loop1) whith its main
>> partition mounted under /mnt like this:
>>
>> $ guix system init /mnt/etc/config.scm /mnt

The above line should actually be:
$ sudo guix system init /mnt/etc/config.scm /mnt

>> This failed with the following error message:
>>
>> Betriebssystem unter »/mnt« wird initialisiert …
>> In execvp of /gnu/store/d4wwx93gqizx132zjk7h1ir7rzph0pig-guix-0.12.0-10.ba2260d/sbin/guix-register: Datei oder Verzeichnis nicht gefunden
>> copying to '/mnt'...
>> guix system: error: fport_write: Datenübergabe unterbrochen (broken pipe)
>
> I suppose you’re running this in a chroot, right?  How did you populate
> that chroot?  Could it be that it misses some store items?

I am not running this in a chroot.
I am afraid the explanation of what I was doing was a bit unclear.  I
was able to reproduce the error with the following steps:

$ mkdir test
$ cd test
$ qemu-img create -f raw test.img 7G
$ cfdisk test.img

I selected gpt and wrote two partitions: the first one with a size of 1M
and type BIOS boot, the second with a size of 7G and type Linux
filesystem.

$ sudo losetup --partscan --show --find test.img
/dev/loop1
$ sudo mkfs.ext4 -L my-root /dev/loop1p2
$ sudo mount /dev/loop1p2 /mnt
$ sudo mkdir /mnt/etc
$ sudo sh -c "sed 's#/dev/sdX#/dev/loop1#g' ../.config/guix/latest/gnu/system/examples/bare-bones.tmpl > /mnt/etc/config.scm"
$ sudo guix system init /mnt/etc/config.scm /mnt
The following derivation will be built:
   /gnu/store/nxy7lfbh8mx7ndrigl1bi3clsm1pnhjh-bootloader-installer.drv
/gnu/store/viyn658a9hgsf0g8r4lan24hb0f8515d-system
/gnu/store/aaigj9lvdyx2wpyyc40z51mjl7ff1zr5-grub.cfg
/gnu/store/m74kz7rvxyzabx6i4p8gd9anws84s45z-grub-2.02
/gnu/store/s4bxrnb584jm0cy5gm3jr8hva341cj2f-bootloader-installer

Betriebssystem unter »/mnt« wird initialisiert …
In execvp of /gnu/store/d4wwx93gqizx132zjk7h1ir7rzph0pig-guix-0.12.0-10.ba2260d/sbin/guix-register: Datei oder Verzeichnis nicht gefunden
guix system: error: failed to register '/gnu/store/2g4dzfcs6nf906d7jl6q225llmnv7krl-linux-libre-4.15' under '/mnt'
copying to '/mnt'...

It does not matter that it is a loopback device.  The same thing happens
if I try to install it on a USB flash drive.
The issue seems to be that there is no
d4wwx93gqizx132zjk7h1ir7rzph0pig-guix-0.12.0-10.ba2260d/
in my store.  All I could find was this:
80k8kz7qk9palbn0ccw7y3fgym8jxlps-guix-0.12.0-10.ba2260d/

Greetings

Diego