My common steps to do a dist-upgrade to a new Debian stable release. Based on https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.en.html but optimised for direct copy and paste, i.e. no italic ''step'' pseudo-variables necessary. And it of courses uses aptitude interactively to [[http://www.infodrom.org/Debian/mike.html|upgrade machines while keeping services downtimes as short as possible]]. = Start the session = == Debian == === Jessie to Stretch === {{{ export new=stretch export old=jessie }}} === Stretch to Buster === {{{ export new=buster export old=stretch }}} === Buster to Bullseye === {{{ export new=bullseye export old=buster }}} === Bullseye to Bookworm === {{{ export new=bookworm export old=bullseye }}} == Devuan == === Ascii to Beowulf === {{{ export new=beowulf export old=ascii }}} == Generic == {{{ screen -U script -t 2>~/upgrade-${new}.time -a ~/upgrade-${new}.script }}} = Common Checks = {{{ dpkg --audit dpkg --get-selections "*" > ~/curr-pkgs.${old}.txt aptitude search "~ahold" dpkg --get-selections | grep 'hold$' }}} == Check if all packages are uptodate and if there are obsolete and local packages installed == {{{ aptitude -u }}} = Make LVM snapshots if needed/wanted/possible = {{{ lvcreate -L 3G -n root-${old} -s /dev/*vg*/root lvcreate -L 5G -n var-${old} -s /dev/*vg*/var lvcreate -L 1G -n log-${old} -s /dev/*vg*/log }}} = Disable config management, etc. = {{{ zile /etc/default/aptitude-robot }}} = Do the upgrade step by step with aptitude = {{{ sed -e "s/${old}/${new}/gi" -i /etc/apt/sources.list /etc/apt/sources.list.d/*.list sed -e 's:bullseye/updates:bullseye-security:g' -i /etc/apt/sources.list /etc/apt/sources.list.d/*.list aptitude -u }}} = Enable automatic package updates again = {{{ zile /etc/default/aptitude-robot }}} Running this will enable the remaining disabled stuff anyways. = Reboot = {{{ shutdown -r now "New kernel after dist-upgrade to ${new}" }}}