User Tools

Site Tools


debian:upgradepathtemplate

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
debian:upgradepathtemplate [2024/03/26 18:35]
114.119.152.147 old revision restored (2024/03/16 14:05)
debian:upgradepathtemplate [2024/03/29 02:20] (current)
114.119.152.147 old revision restored (2024/03/19 17:59)
Line 4: Line 4:
  
 I will normally create a complete system clone and use this template to work out the entire correct and functional path for the production system in question. I will normally create a complete system clone and use this template to work out the entire correct and functional path for the production system in question.
 +
 +Debian Release upgrade paths:
 +
 +  Jessie -> Buster -> Bullseye
 +  Stretch -> Buster -> Bullseye
 +  Buster -> Bullseye
  
 ===== 1. Preparing for the upgrade ===== ===== 1. Preparing for the upgrade =====
  
  
-1.1. Back up any data or configuration information +==== 1.1. Back up any data or configuration information ==== 
-1.2. Inform users in advance + 
-1.3. Prepare for downtime on services +==== 1.2. Inform users in advance ==== 
-            Set maintainance window for upgrade with buffer + 
-1.4. Prepare for recovery +==== 1.3. Prepare for downtime on services ==== 
-            Verify the recoverability of system from backup image + 
-1.5. Prepare a safe environment for the upgrade + Set maintainance window for upgrade with buffer 
-            Local terminal or SSH access + 
-1.6. Develop tests for section 3.3 that will ensure correct execution of needed tasks +==== 1.4. Prepare for recovery ==== 
-            i.e.: + 
-                a. Web server delivers correctly + Verify the recoverability of system from backup image 
-                b. php scripts execute correctly + 
-                c. DB runs correctly +==== 1.5. Prepare a safe environment for the upgrade ==== 
-                d. mail works+ 
 + Local terminal or SSH access 
 + 
 +==== 1.6. Develop tests for section 3.3 that will ensure correct execution of needed tasks ==== 
 + 
 + i.e.: 
 +  a. Web server delivers correctly 
 +  b. php scripts execute correctly 
 +  c. DB runs correctly 
 +  d. mail works
  
 ===== 2. Checking system status ===== ===== 2. Checking system status =====
Line 31: Line 46:
     # apt-forktracer | sort     # apt-forktracer | sort
  
-2.1. Review actions pending in package manager +==== 2.1. Review actions pending in package manager ==== 
-            # aptitude + 
-            Select GO and review +    # aptitude 
-2.2. Disabling APT pinning +  Select GO and review 
-            check /etc/apt/preferences & /etc/apt/preferences.d/ for entries + 
-2.3. Checking packages status +==== 2.2. Disabling APT pinning ==== 
-            # dpkg --audit + 
-            # aptitude search "~ahold" + check /etc/apt/preferences & /etc/apt/preferences.d/ for entries 
-            # dpkg --get-selections | grep 'hold$'+ 
 +==== 2.3. Checking packages status ==== 
 + 
 +  # dpkg --audit 
 +  # aptitude search "~ahold" 
 +  # dpkg --get-selections | grep 'hold$' 
 + 
 + To remove a hold on a package: 
 +  echo package_name install | dpkg --set-selections 
 + 
 +==== 2.4. Remove proposed-updates section if present in /etc/apt/sources.list ==== 
 + 
 +==== 2.5. Verify Unofficial sources are available for target Debian version ====
  
-         To remove a hold on a package: echo package_name install | dpkg --set-selections 
-2.4. Remove proposed-updates section if present in /etc/apt/sources.list 
-2.5. Verify Unofficial sources are available for target Debian version 
  
 ===== 3. Upgrading current version ===== ===== 3. Upgrading current version =====
  
  
-3.1. Update current installation +==== 3.1. Update current installation ==== 
-            # sudo apt update + 
-3.2. Upgrade current installation +  # sudo apt update 
-            # sudo apt upgrade + 
-3.3. Check functionality +==== 3.2. Upgrade current installation ==== 
-            Verify all services required of current host is functioning correctly + 
-3.4. Upgrade current distribution +  # sudo apt upgrade 
-            # sudo apt dist-upgrade + 
-3.5. Check functionality +==== 3.3. Check functionality ==== 
-            see 3.3 above+ 
 + Verify all services required of current host is functioning correctly 
 + 
 +==== 3.4. Upgrade current distribution ==== 
 + 
 +  # sudo apt dist-upgrade 
 + 
 +==== 3.5. Check functionality ==== 
 + 
 + see 3.3 above
  
 ===== 4. Preparing sources for APT ===== ===== 4. Preparing sources for APT =====
  
  
-4.1. Adding APT Internet sources +==== 4.1. Adding APT Internet sources ==== 
-            # sudo sed -i 's/CURRENT_RELEASE/TARGET_RELEASE/g' /etc/apt/sources.list + 
-            # sudo sed -i 's/CURRENT_RELEASE/TARGET_RELEASE/g' /etc/apt/sources.list.d/+  # sudo sed -i 's/CURRENT_RELEASE/TARGET_RELEASE/g' /etc/apt/sources.list 
-4.2. Adding APT sources for a local mirror +  # sudo sed -i 's/CURRENT_RELEASE/TARGET_RELEASE/g' /etc/apt/sources.list.d/
-            Only required for special in-house software + 
-4.3. Adding APT sources from optical media +==== 4.2. Adding APT sources for a local mirror ==== 
-            Only required for special 3rd party delivered software+ 
 + Only required for special in-house software 
 + 
 +==== 4.3. Adding APT sources from optical media ==== 
 + 
 + Only required for special 3rd party delivered software
  
 ===== 5. Upgrading packages ===== ===== 5. Upgrading packages =====
  
  
-    Ensure all partition mountpoints are mounted read-write + Ensure all partition mountpoints are mounted read-write
-        # mount -o remount,rw /mountpoint+
  
-5.1. Recording the session +  # mount -o remount,rw /mountpoint 
-            # script -t 2>~/upgrade-TARGET_RELEASEstep.time -a ~/upgrade-TARGET_RELEASEstep.script + 
-         To replay session use scriptreplay +==== 5.1. Recording the session ==== 
-            # scriptreplay ~/upgrade-TARGET_RELEASE.time ~/upgrade-TARGET_RELEASE.script + 
-5.2. Updating the package list +  # script -t 2>~/upgrade-TARGET_RELEASEstep.time -a ~/upgrade-TARGET_RELEASEstep.script 
-            # apt-get update + 
-5.3. Make sure you have sufficient space for the upgrade + To replay session use scriptreplay 
-            # apt-get -o APT::Get::Trivial-Only=true dist-upgrade +  # scriptreplay ~/upgrade-TARGET_RELEASE.time ~/upgrade-TARGET_RELEASE.script 
-5.4. Minimal system upgrade + 
-            # apt-get upgrade +==== 5.2. Updating the package list ==== 
-5.5. Check functionality + 
-            See 3.3 above +  # apt-get update 
-5.6. Upgrading the system + 
-            # apt-get dist-upgrade +==== 5.3. Make sure you have sufficient space for the upgrade ==== 
-5.7. Check functionality + 
-            See 3.3 above+  # apt-get -o APT::Get::Trivial-Only=true dist-upgrade 
 + 
 +==== 5.4. Minimal system upgrade ==== 
 + 
 +  # apt-get upgrade 
 + 
 +==== 5.5. Check functionality ==== 
 + 
 + See 3.3 above 
 + 
 +==== 5.6. Upgrading the system ==== 
 + 
 +  # apt-get dist-upgrade 
 + 
 +==== 5.7. Check functionality ==== 
 + 
 + See 3.3 above
  
 ===== 6. Possible issues during upgrade ===== ===== 6. Possible issues during upgrade =====
  
  
-6.1. Dist-upgrade fails with “Could not perform immediate configuration” +==== 6.1. Dist-upgrade fails with “Could not perform immediate configuration” ==== 
-            # apt-get dist-upgrade -o APT::Immediate-Configure=0 + 
-6.2. Expected removals +  # apt-get dist-upgrade -o APT::Immediate-Configure=0 
-6.3. Conflicts or Pre-Depends loops + 
-            use -o APT::Force-LoopBreak=1 with apt-get +==== 6.2. Expected removals ==== 
-         or + 
-            # dpkg --remove package_name +==== 6.3. Conflicts or Pre-Depends loops ==== 
-        or + 
-            # apt-get -f install + use -o APT::Force-LoopBreak=1 with apt-get 
-            # dpkg --configure --pending + or 
-        or +  # dpkg --remove package_name 
-            # dpkg --install /path/to/package_name.deb + or 
-6.4. File conflicts +  # apt-get -f install 
-            # dpkg -r --force-depends package_name +  # dpkg --configure --pending 
-6.5. Configuration changes + or 
-            Usually answer "YES" to files in /etc/init.d directory or /etc/manpath.config +  # dpkg --install /path/to/package_name.deb 
-6.6. Change of session to console + 
-            Ctrl+Alt+F1 should recover the terminal window+==== 6.4. File conflicts ==== 
 + 
 +  # dpkg -r --force-depends package_name 
 + 
 +==== 6.5. Configuration changes ==== 
 + 
 + Usually answer "YES" to files in /etc/init.d directory or /etc/manpath.config 
 + 
 +==== 6.6. Change of session to console ==== 
 + 
 + Ctrl+Alt+F1 should recover the terminal window
  
 ===== 7. Upgrading kernel and related packages ===== ===== 7. Upgrading kernel and related packages =====
  
  
-7.1. Install any needed kernel metapackage +==== 7.1. Install any needed kernel metapackage ==== 
-            Check for meta package + 
-                # dpkg -l "linux-image*" | grep ^ii | grep -i meta + Check for meta package 
-            if none are installed check which ones are available + 
-                # apt-cache search linux-image- | grep -i meta | grep -v transition +  # dpkg -l "linux-image*" | grep ^ii | grep -i meta 
-            select correct one based on value returned by running "uname -r" eg. kernel “2.6.32-5-amd64” + 
-                # apt-cache show linux-image-amd64+ if none are installed check which ones are available 
 + 
 +  # apt-cache search linux-image- | grep -i meta | grep -v transition 
 + 
 + select correct one based on value returned by running "uname -r" eg. kernel “2.6.32-5-amd64” 
 + 
 +  # apt-cache show linux-image-amd64
  
 ===== 8. Preparing for the next release ===== ===== 8. Preparing for the next release =====
  
  
-8.1. Purging removed packages +==== 8.1. Purging removed packages ==== 
-            Remove redundant or obsolete packages. see 5.3 above + 
-            get list of removed packages + Remove redundant or obsolete packages. see 5.3 above 
-                # dpkg -l | awk '/^rc/ { print $2 }' + 
-            remove using + get list of removed packages 
-                # apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') + 
-            or use +  # dpkg -l | awk '/^rc/ { print $2 }' 
-                # aptitude search '~c' + 
-                # aptitude purge '~c'+ remove using 
 + 
 +  # apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') 
 + 
 + or use 
 + 
 +  # aptitude search '~c' 
 +  # aptitude purge '~c'
  
 ===== 9. Obsolete packages ===== ===== 9. Obsolete packages =====
  
  
-9.1. Dummy packages+==== 9.1. Dummy packages ==== 
debian/upgradepathtemplate.txt · Last modified: 2024/03/29 02:20 by 114.119.152.147