Subject: bug#53000: How to reclaim space when no space is available?

From: Liliana Marie Prikler <[email-masked]>
Date: Tue, 04 Jan 2022 07:56:01 +0100

Am Montag, dem 03.01.2022 um 23:12 -0500 schrieb Jeffrey Walton:
> Hi Everyone,
> 
> I've run out of disk space. I'm trying to run 'guix gc' but it seems
> to need disk space to perform the garbage collection.
> 
> $ sudo guix gc
I don't think the manuals specify using `sudo guix gc'.  Last time I
checked a normal `guix gc' does the same, as the logic is in either way
handed off to the daemon running as root already.

> finding garbage collector roots...
> note: can't create trash directory: creating directory
> `/gnu/store/trash': No space left on device
> deleting garbage...
> ...
> error (ignored): aborting transaction: cannot rollback - no
> transaction is active guix gc: error: committing transaction:
> database or disk is full
> 
> Does anyone know how to delete all old packages and artifacts without
> the need for some free disk space?
It's a known bug that you currently can't free space without having
space.  (You can try searching for similar bug IDs or you can wait for
someone else to link you to them.)  The "fix" would ironically be to
sacrifice even more space to Guix by avoiding store deduplication,
because then store items can easily be deleted.

You could try manually freeing up space, but as someone who already
messed with GC internals I'd heavily suggest you avoid doing that. 
Unless you don't mind stuffing kittens in a blender, that is.

> I don't need old stuff. I use the VM to test builds and run self
> tests of some packages I am responsible for. I don't need the extra
> bells and whistles.
Those extra bells and whistles are the entire point of functional
package management.  You get backups and roll-backs for free.  If you
think VMs or Docker containers are sufficient for testing purposes
while you happily accept Debian overwriting files in-place, that is a
position you can hold, but it is not the Nix/Guix way.

Cheers