Say you are dual-booting Debian and Arch and want to upgrade Debian oldstable to Debian stable. But you want to keep the old installation available as a fall-back option. And you also want to re-use your configuration files and dot files, but in a way that incompatible changes to your dot files in the new Debian or Arch version do never break the old program versions.
How do you do that ?
(I describe my own approach in a comment below.)
root partition / file system
For my needs, the simplest way us to use an extra partition might be to keep it as a reserve to install the next Distribution release. So you go
partition A: Debian 12
Partition B: /home
Partition C: Debian 13
And swap A and C for the next upgrade. It is really nice to have a whole compatible fallback system.
Another possibly quicker way to do this is a larger BTRFS disk and create subvolumes from snapshots and mount these. When the subvolumes are no longer needed, they can be deleted like any folder.
One can also use LVM, the logical volume manager, for the same effect. It plays nicely with LUKS encryption for laptops. But I think BTRFS is simpler most times.
How to move all packages over
One can copy the system e.g. using a
tar
backup, fix the mount points by changing the volume label (which identifies the mount point), and do a dist upgrade then. I use “tar” here because it keeps all file attributes.I guess that’s the best way to do it on a server. But for desktop systems, I now think it is better to make a list of manually installed packages, and to re-install the packages that are still needed from that list. This has two advantages:
keeping dot files, the copy-and-modify way
And one more thing I do for the dot files:
Say, my home folder is in /home/hvb . Then, I install Debian 12 and set /home/hvb/deb12 as my home folder (by editing /etc/passwd). I put my data in /home/hvb/Documents, /home/hvb/Photos/ and sym-link these folders into /home/hvb/deb12. When I upgrade, I first create a new folder /home/hvb/deb14, copy my dot files from deb12, and install a new root partition with my home set to /home/hvb/deb14. Then, I again link my data folders , documents and media such as /home/hvb/Documents into /home/hvb/deb14 . The reason I do this is that new versions of programs can upgrade the dot files to a new syntax or features, but when I switch back to boot Debian 12, the old versions can’t necessarily read the newer-version config files (the changes are mostly promised to be backward-compatible but not forward-compatible).
All in all this is a very conservative approach but it works for me with running Debian now for about 15 years in a rather large desktop setup.
And the above also worked well for me with distro-hopping. Though nowadays, it is more recommended to install parallel dual-booted distros on another removable disk since such installs can also modify grub and EFI setup, early graphics drivers and so on, even if in theory dual-boot installs should be completely independent… but my experience is that is not any more always guaranteed.