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
Next revision
Previous revision
debian:upgradepathtemplate [2024/04/17 22:13]
51.174.65.41 old revision restored (2024/04/14 18:29)
debian:upgradepathtemplate [2024/04/30 21:48] (current)
114.119.156.110 old revision restored (2024/03/06 07:26)
Line 1: Line 1:
 ====== Template for Debian System Release Upgrade ====== ====== Template for Debian System Release Upgrade ======
  
-1. Preparing for the upgrade+This template is meant to serve as a general upgrade path for any Debian release. This is my standard path and will be adjusted based on the "old" current release installed on the system and the target "new" release the server is being upgraded to.
  
-1.1. Back up any data or configuration information +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. 
-    1.2. Inform users in advance + 
-    1.3. Prepare for downtime on services +Debian Release upgrade paths: 
-            Set maintainance window for upgrade with buffer + 
-    1.4. Prepare for recovery +  Jessie -> Buster -> Bullseye 
-            Verify the recoverability of system from backup image +  Stretch -> Buster -> Bullseye 
-    1.5. Prepare a safe environment for the upgrade +  Buster -> Bullseye 
-            Local terminal or SSH access+ 
 +===== 1. Preparing for the upgrade ===== 
 + 
 + 
 +==== 1.1. Back up any data or configuration information ==== 
 + 
 + Sometimes you will need certain server information at your fingertips during possible failures of the server. Figure out what you may need and make sure you have it local and ready. 
 +==== 1.2. Inform users in advance ==== 
 + 
 +=== 1.2.1 - Who and How should be informed === 
 + 
 + Ensure the maintainance window you are planning is OK with all involved. 
 + 
 +=== 1.2.2 - Notify 1 Day prior to planned upgrade === 
 + 
 +=== 1.2.3 - Notify 2 Hours prior to beginn of upgrade === 
 +==== 1.3. Prepare for downtime on services ==== 
 + 
 + Set maintainance window for upgrade with buffer 
 + 
 +==== 1.4. Prepare for recovery ==== 
 + 
 + Verify the recoverability of system from backup image 
 + 
 + This is the perfect time to assess the Backup plans, when not previously done, if you are hired to ensure the reliability of the infrastructure. 
 +==== 1.5. Prepare a safe environment for the upgrade ==== 
 + 
 + 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 
  
   find NON-Pure Debian packages   find NON-Pure Debian packages
Line 19: Line 55:
     # 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 ==== 
 + 
 + 
 +===== 3. Upgrading current version ===== 
 + 
 + 
 +==== 3.1. Update current installation ==== 
 + 
 +  # sudo apt update 
 + 
 +==== 3.2. Upgrade current installation ==== 
 + 
 +  # sudo apt upgrade 
 + 
 +==== 3.3. Check functionality ==== 
 + 
 + 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.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/
 + 
 +==== 4.2. Adding APT sources for a local mirror ==== 
 + 
 + 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 ===== 
 + 
 + 
 + Ensure all partition mountpoints are mounted read-write 
 + 
 +  # mount -o remount,rw /mountpoint 
 + 
 +==== 5.1. Recording the session ==== 
 + 
 +  # script -t 2>~/upgrade-TARGET_RELEASEstep.time -a ~/upgrade-TARGET_RELEASEstep.script 
 + 
 + To replay session use scriptreplay 
 +  # scriptreplay ~/upgrade-TARGET_RELEASE.time ~/upgrade-TARGET_RELEASE.script 
 + 
 +==== 5.2. Updating the package list ==== 
 + 
 +  # apt-get update 
 + 
 +==== 5.3. Make sure you have sufficient space for the upgrade ==== 
 + 
 +  # 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.1. Dist-upgrade fails with “Could not perform immediate configuration” ==== 
 + 
 +  # apt-get dist-upgrade -o APT::Immediate-Configure=0 
 + 
 +==== 6.2. Expected removals ==== 
 + 
 +==== 6.3. Conflicts or Pre-Depends loops ==== 
 + 
 + use -o APT::Force-LoopBreak=1 with apt-get 
 + or 
 +  # dpkg --remove package_name 
 + or 
 +  # apt-get -f install 
 +  # dpkg --configure --pending 
 + or 
 +  # dpkg --install /path/to/package_name.deb 
 + 
 +==== 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.1. Install any needed kernel metapackage ==== 
 + 
 + Check for meta package 
 + 
 +  # dpkg -l "linux-image*" | grep ^ii | grep -i meta 
 + 
 + if none are installed check which ones are available 
 + 
 +  # apt-cache search linux-image- | grep -i meta | grep -v transition
  
-         To remove a hold on a package: echo package_name install | dpkg --set-selections + select correct one based on value returned by running "uname -r" eg. kernel “2.6.32-5-amd64”
-    2.4Remove 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+  # apt-cache show linux-image-amd64
  
-    3.1. Update current installation +===== 8Preparing for the next release =====
-            # sudo apt update +
-    3.2. Upgrade current installation +
-            # sudo apt upgrade +
-    3.3. Check functionality +
-            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.1. Adding APT Internet sources +==== 8.1. Purging removed packages ====
-            # 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/+
-    4.2. Adding APT sources for a local mirror +
-            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+ Remove redundant or obsolete packages. see 5.3 above
  
-    Ensure all partition mountpoints are mounted read-write + get list of removed packages
-        # mount -o remount,rw /mountpoint+
  
-    5.1. Recording the session +  dpkg -l | awk '/^rc{ print $}'
-            script -t 2>~/upgrade-TARGET_RELEASEstep.time -a ~/upgrade-TARGET_RELEASEstep.script +
-         To replay session use scriptreplay +
-            # scriptreplay ~/upgrade-TARGET_RELEASE.time ~/upgrade-TARGET_RELEASE.script +
-    5.2. Updating the package list +
-            # apt-get update +
-    5.3. Make sure you have sufficient space for the upgrade +
-            # 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+ remove using
  
-    6.1. Dist-upgrade fails with “Could not perform immediate configuration” +  # apt-get purge $(dpkg -l | awk '/^rc{ print $2 }')
-            # apt-get dist-upgrade -o APT::Immediate-Configure=0 +
-    6.2. Expected removals +
-    6.3. Conflicts or Pre-Depends loops +
-            use -o APT::Force-LoopBreak=1 with apt-get +
-         or +
-            # dpkg --remove package_name +
-        or +
-            # apt-get -f install +
-            # dpkg --configure --pending +
-        or +
-            # dpkg --install /path/to/package_name.deb +
-    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+ or use
  
-    7.1. Install any needed kernel metapackage +  aptitude search '~c' 
-            Check for meta package +  aptitude purge '~c'
-                dpkg -l "linux-image*" | grep ^ii | grep -i meta +
-            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+
  
-8Preparing for the next release+===== 9Obsolete packages =====
  
-    8.1. Purging removed packages 
-            Remove redundant or obsolete packages. see 5.3 above 
-            get list of removed packages 
-                # dpkg -l | awk '/^rc/ { print $2 }' 
-            remove using 
-                # apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') 
-            or use 
-                # aptitude search '~c' 
-                # aptitude purge '~c' 
  
-9. Obsolete packages+==== 9.1. Dummy packages ====
  
-    9.1. Dummy packages 
debian/upgradepathtemplate.1713384813.txt.gz · Last modified: 2024/04/17 22:13 by 51.174.65.41