Distro upgrade strategies


Hugh Boddington
 

Hello all,

I'm struggling conceptually with a recommended upgrade strategy for our distribution (i.e. the resultant distribution on an ARM-based embedded device, not the development SDK itself). I had initially assumed that a package manager (we're using DNF) could be used to upgrade a distribution from one version to the next, but every time I've used it to try to deploy a large upgrade (e.g., Zeus->Dunfell) I've run into problems. Currently, if I try to use DNF to upgrade from a Zeus-based distribution my DNF installation breaks ("ModuleNotFoundError: No module named 'dnf'") and I can't even shut the device down ("/run/initctl: No such file or directory"). However, if I install the Dunfell-based distribution from a raw image (without upgrading through Zeus) then everything works fine. I'm not getting an errors in my build or indication that something went wrong, but obviously something is amiss.

Questions:
1) Am I missing something? Is it reasonable to expect that I can upgrade the whole distro using DNF? I've read the wiki page about System Updates (https://wiki.yoctoproject.org/wiki/System_Update) and DNF (or any other package manager) is not listed - does that imply it's not up to the job?
2) If I do continue using DNF, how do I troubleshoot the above issues? I don't mean specifically those issues, but I want to learn to fish. Some packages got broken. Was it caused by the distro I'm upgrading from? To? What's the best way of tracing it back? I tried looking through the various commits but obviously there were a lot of changes made from one distro to another. The above scenario seems also to be a perfect storm because now that DNF is broken I don't have a mechanism to downgrade anything.

I can't help but think that I'm swimming against the current here, or that I've done something fundamentally wrong - I'd appreciate any insight or advice. Thank you!

Hugh

Join yocto@lists.yoctoproject.org to automatically receive all group messages.