Issue with Distribution Update page on Pioneer FreedomBox

Quick rundown

  1. On System > Software Update > Distribution Update, I see the warning:
    “You need to have at least 5 Gb of free space available on primary disk to
    perform a distribution update.”

  2. The Start Distribution Update button stays inactive, even after freeing up space.

  3. If I extract the link from the button in Developer Tools, I can manually navigate to the next page, but I’m hesitant to start since I’m not sure the condition is actually satisfied.

My situation

Initially had <5GB free.

What I tried:

  • Removed several snapshots
  • Reluctantly removed temporarily disabled apps.
  • Checked for freedombox-dist-upgrade.service, but it doesn’t exist (so I suppose the upgrade never started).

Plinth’s Storage app now shows ~5GB free.

I’m still seeing the warning and disabled button.

I’d very much prefer not to remove any of the apps I have active as I rely on them and use all of them daily.

Questions:

Does FreedomBox evaluate free space differently than what the Storage app reports?

What logs or commands can I run to confirm why the upgrade button remains disabled?

Will the button become enabled once I meet the storage space condition or is this a UI bug?

System details

  • Hardware: Pioneer FreedomBox
  • FreedomBox version: 25.9.3
  • Debian release: Debian GNU/Linux 12 (bookworm)
  • Storage space:
    • Storage app: 24.4 GiB / 29.6 GiB (free 5.2 GiB or ~5.5 Gb)
    • df -h /: 25 G / 30 G (available 3.9 G)

Thanks for any guidance! I’d like to proceed safely without breaking the upgrade.

You could copy your microSD to a 64 GB microSD with dd. I know that this uses a lot of care. This is how I do it: I open the drive manager (client computer), connect the device with the data I want to have a copy of, write it to the if= (in the example below /dev/sdc) and then I connect the empty device, where the copy should go to and write the device name to of= (in the example below /dev/sdd)

sudo dd if=/dev/sdc of=/dev/sdd bs=4096 status=progress

after the copy process you can easily expand the btrfs partition either in the cockpit or with

sudo btrfs filesystem resize max /

https://btrfs.readthedocs.io/en/latest/btrfs-filesystem.html#man-filesystem-resize

The good thing is, if something goes wrong with the update, you have a up to date copy (the 32 GB SD)

2 Likes
  • Only reason the message “You need to have at least 5 GB…” is shown is because there is not enough space. There are no other conditions that trigger this message.
  • Free space is checked slightly differently from Storage app. The command that is run is df –output=avail /. Please run this command on the console (Cockpit, SSH, or direct Terminal) and ensure the value is greater than 5,000,000 (this value is in KiB).
  • The value of 5 GB is our rough estimate for disk space required when there are a lot of apps installed (and need upgrading). In practice, few people actually need that much space. So, if you are close to it, feel free to violate that.
  • The check is only in UI and if you bypass it, the backend process won’t stop you.
1 Like

Note that if there is free space at the end of the disk like in this case, Storage app will show a message to expand the root partition and will allow you to expand with a simple click (this can also be done by re-running setup for the Storage app).

Thank you very much for the reply. I’ll move forward with the update tonight.

1 Like

good luck. just started my update a moment ago. fingers crossed : )

Hello! I tried bypassing the UI and started the distribution upgrade process. This morning, everything was the same. I checked for freedombox-dist-upgrade.service and it didn’t exist.

I checked the logs via the Cockpit terminal using journalctl -f and re-run the distribution upgrade. Once again, the process didn’t complete.

The one error that stood out to me was:

Aug 20 09:47:06 freedombox systemd-inhibit[17900]: {"result": "exception", "exception": {"module": "builtins", "name": "RuntimeError", "args": ["Apt command failed with return code: 100"], "traceback": ["  File \"/usr/lib/python3/dist-packages/plinth/actions.py\", line 398, in _privileged_call\n    return_values = func(*arguments['args'], **arguments['kwargs'])\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", "  File \"/usr/lib/python3/dist-packages/plinth/modules/upgrades/privileged.py\", line 262, in dist_upgrade\n    distupgrade.perform()\n", "  File \"/usr/lib/python3/dist-packages/plinth/modules/upgrades/distupgrade.py\", line 419, in perform\n    _apt_full_upgrade()\n", "  File \"/usr/lib/python3/dist-packages/plinth/modules/upgrades/distupgrade.py\", line 360, in _apt_full_upgrade\n    _apt_run(['full-upgrade', '-o', 'Dpkg::Options::=--force-confnew'])\n", "  File \"/usr/lib/python3/dist-packages/plinth/modules/upgrades/distupgrade.py\", line 78, in _apt_run\n    raise RuntimeError(\n"]}}

Do you know what could be causing the issue?

The error simply says that the command ‘apt-get full-upgrade has failed’. Will you be able to send me more complete journal containing actual apt-get command failure and its reason?

I’m not sure how to do this. I’ve run journal | grep apt. If there’s a better way to do this, I’ll re-upload.

Pastebin with logs

Unfortunately, that didn’t have enough information. Could you please collect it like this:

sudo journalctl -n 10000 > debug.log

Here’s the output:

Pastebin with larger log

@fefekrzr I have noticed that FreedomBox is trying to upgrade Bind and MiniDLNA apps (because they have configuration file prompts that can’t be dealt by unattended-upgrade). However, both the operations are failing because apt in an state that can’t be recovered from. Apt throws the following error:

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Please try the following:

apt-mark showhold

For each package that is held, run:

apt-mark unhold {package_name}

Then run:

dpkg --configure -a
apt -f install

During this if there are configuration file prompts for MiniDLNA, choose “Install new configuration”. For Bind choose “Keep old configuration”. After that re-run setup for both the apps in FreedomBox. If all this succeeds, try Distribution Upgrade again. Post any errors otherwise.

This commands show empty output. I imagine there are no packages on hold.

I tested running apt-mark unhold bind9 and got this output:

bind9 was already not on hold.

However, I can see in the “Software Update” page’s logs that these packages are supposedly held back:

2025-08-21 23:31:56,772 INFO Package bind9 is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:56,786 INFO Package bind9-dnsutils is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:56,798 INFO Package bind9-host is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:56,812 INFO Package bind9-libs is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:56,825 INFO Package bind9-utils is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:57,038 INFO Package exim4-base is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:57,053 INFO Package exim4-daemon-light is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:57,375 INFO Package highlight is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:57,389 INFO Package highlight-common is kept back because a related package is kept back or due to local apt_preferences(5).
2025-08-21 23:31:58,160 INFO Package libgl1-mesa-dri is kept back because a related package is kept back or due to local apt_preferences(5).

Can I manually trigger the upgrade of the supposedly held back packages from the command line so that I can answer the prompts?

@fefekrzr Umm… machine is still on Bookworm and no other sources have been added to the list right?

Please go ahead and run ‘apt install’ on packages that have been kept back. It should be safe.

I’m still on Bookworm. My machine is as Vanilla as it gets.

I’ll start upgrading the packages and report the results. Thanks for the help!

1 Like

This is the output of apt install bind9:

Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 22399 (apt-get)      
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 22399 (apt-get)      
Reading package lists... Done                                                                                
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 bind9 : Depends: adduser but it is not going to be installed
         Depends: iproute2 but it is not going to be installed
 login : PreDepends: libpam-runtime but it is not going to be installed
         PreDepends: libpam-modules but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
apt install login libpam-runtime libpam-modules

Also:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*

These are the outputs:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 apt : Depends: libgnutls30 (>= 3.7.5) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
deb tor+http://deb.debian.org/debian stable main
deb-src tor+http://deb.debian.org/debian stable main

deb tor+http://deb.debian.org/debian stable-updates main
deb-src tor+http://deb.debian.org/debian stable-updates main

deb tor+http://security.debian.org/debian-security/ stable-security main
deb-src tor+http://security.debian.org/debian-security/ stable-security main
# This file is managed by FreedomBox, do not edit.
# Allow carefully selected updates to 'freedombox' from backports.

deb tor+http://deb.debian.org/debian bookworm-backports main
deb-src tor+http://deb.debian.org/debian bookworm-backports main

Okay, the sources.list has “stable” as distribution. That means as soon as Trixie got release, “stable” pointed to “Trixie” instead of “Bookworm”. And now there are some packages from Bookworm and some from “Trixie”. Was this official FreedomBox image or from Debian installer? What hardware is this?

Now, to recover from this, first take a backup of all the apps in FreedomBox. Also take an SD card copy. Then try manually:

apt full-upgrade 

This will likely fail. Then try to installing just the problematic packages (and their dependencies with just one apt-get command) until full-upgrade succeeds. If all else fails, I guess the best thing to do is a fresh installation.

Hardware is Pioneer Edition FreedomBox and the image is the Pioneer image taken from the FreedomBox website.

I purposefully keep this FreedomBox as vanilla as possible so that it stays predictable for all the scripting. I let FreedomBox take care of all updates and never trigger them manually (except just now for this testing).

I’ll get to backing up then. Thank you for your help!