Getting Jonny Upgrade Working Without Breaking Your System

Jonny Upgrade is basically a wrapper around apt and dpkg that tries to make Ubuntu and Debian upgrades less painful. It handles the messy parts like dependency resolution and package removal that normally trip people up during do-release-upgrade or dist-upgrade sequences. The idea is sound, but it isn't magic. It still runs on the same package management tools underneath, so if your system is already in a broken state, you will hit the same walls. The straightforward route is pulling it from the GitHub repository. Clone it, run the install script, and you are set. On my machines I usually just grab it into /opt or somewhere similar. Here is what that looks like in practice: git clone https://github.com/parrotsec-project/jonnyupgrade.git cd jonnyupgrade sudo ./install.sh

That puts jonnyupgrade on your PATH and configures the basic hooks. Some people prefer the PPA route if they are on Ubuntu rather than Debian, but honestly the repo method is more transparent. You can see exactly what the installer does instead of hoping a PPA maintainer hasn't patched something weird in.

Running an actual upgrade

Once installed, the typical command is just jonnyupgrade. It scans your current packages, identifies what needs upgrading, and works through the dependency tree. The main difference from a plain apt upgrade is that it gives you more visibility into what is being pulled in and what might get removed. It also tends to be a bit more careful about holding back problematic packages. I ran into a real issue once where jonnyupgrade kept trying to remove a kernel module package during a Debian to Debian release transition. The package in question was libv4l-0 and it had a hold that wasn't showing up in my initial review. The system was stuck in a loop where it kept offering the same removal. What fixed it was running sudo apt-mark showhold first to check, then explicitly unholding any packages that jonnyupgrade was fighting over. After that, the upgrade went clean.

Get the Full Details

Johnny Upgrade
Johnny Upgrade

Known limitations

Jonny Upgrade does not solve every problem. It still uses dpkg under the hood, so if you have manually held packages, broken dependencies from third-party PPAs, or mixed repository sources, it will choke the same way apt would. I have seen it fail on systems running backports mixed with stable repos without explicit guidance on which packages to prioritize. In those cases, manually resolving the conflicts first with apt-get install -f usually gets you back to a point where jonnyupgrade can run. Another thing to keep in mind is that it does not replace do-release-upgrade for major version jumps. It is meant for routine upgrades within a release or minor transitions. Going from Debian 12 to 13 still needs the proper release upgrade tool. Trying to force jonnyupgrade across a full release boundary usually ends with a fragmented package state that takes hours to clean up.

When to skip it

If your system is mostly stock Ubuntu or Debian with official repositories, jonnyupgrade saves time on routine updates. If you are running a heavily customized setup with PPAs, third-party repos, or custom kernel builds, you might be better off sticking with manual apt procedures where you have full control over what gets affected. There is no harm in checking the jonnyupgrade log after a failed run. It tells you exactly which dependency chain caused the break, which is often faster than wrestling with apt's error output directly.