This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
debian:upgradepathtemplate [2024/04/17 19:38] 51.174.65.41 old revision restored (2023/06/30 16:21) |
debian:upgradepathtemplate [2024/04/30 13:42] 54.38.85.21 old revision restored (2023/02/02 14:16) |
||
---|---|---|---|
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 ===== | ||
Line 24: | Line 18: | ||
==== 1.4. Prepare for recovery ==== | ==== 1.4. Prepare for recovery ==== | ||
- | Verify the recoverability of system from backup image | + | |
==== 1.5. Prepare a safe environment for the upgrade ==== | ==== 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 ==== | ==== 1.6. Develop tests for section 3.3 that will ensure correct execution of needed tasks ==== | ||
- | i.e.: | + | |
- | a. Web server delivers correctly | + | a. Web server delivers correctly |
- | b. php scripts execute correctly | + | b. php scripts execute correctly |
- | c. DB runs correctly | + | c. DB runs correctly |
- | d. mail works | + | d. mail works |
===== 2. Checking system status ===== | ===== 2. Checking system status ===== | ||
Line 48: | Line 42: | ||
==== 2.1. Review actions pending in package manager ==== | ==== 2.1. Review actions pending in package manager ==== | ||
- | | + | |
- | Select GO and review | + | Select GO and review |
==== 2.2. Disabling APT pinning ==== | ==== 2.2. Disabling APT pinning ==== | ||
- | check / | + | |
==== 2.3. Checking packages status ==== | ==== 2.3. Checking packages status ==== | ||
- | | + | |
- | # aptitude search " | + | # aptitude search " |
- | # dpkg --get-selections | grep ' | + | # dpkg --get-selections | grep ' |
- | + | ||
- | To remove a hold on a package: | + | |
- | echo package_name install | dpkg --set-selections | + | |
+ | To remove a hold on a package: echo package_name install | dpkg --set-selections | ||
==== 2.4. Remove proposed-updates section if present in / | ==== 2.4. Remove proposed-updates section if present in / | ||
Line 73: | Line 64: | ||
3.1. Update current installation | 3.1. Update current installation | ||
- | + | | |
- | | + | |
3.2. Upgrade current installation | 3.2. Upgrade current installation | ||
- | + | | |
- | | + | |
3.3. Check functionality | 3.3. Check functionality | ||
- | + | | |
- | Verify all services required of current host is functioning correctly | + | |
3.4. Upgrade current distribution | 3.4. Upgrade current distribution | ||
- | + | | |
- | | + | |
3.5. Check functionality | 3.5. Check functionality | ||
- | + | | |
- | see 3.3 above | + | |
===== 4. Preparing sources for APT ===== | ===== 4. Preparing sources for APT ===== | ||
Line 96: | Line 78: | ||
4.1. Adding APT Internet sources | 4.1. Adding APT Internet sources | ||
- | + | | |
- | | + | # sudo sed -i ' |
- | # sudo sed -i ' | + | |
4.2. Adding APT sources for a local mirror | 4.2. Adding APT sources for a local mirror | ||
- | + | | |
- | Only required for special in-house software | + | |
4.3. Adding APT sources from optical media | 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 | + | |
- | + | # mount -o remount,rw /mountpoint | |
- | | + | |
5.1. Recording the session | 5.1. Recording the session | ||
- | + | | |
- | | + | |
- | + | # scriptreplay ~/ | |
- | To replay session use scriptreplay | + | |
- | # scriptreplay ~/ | + | |
5.2. Updating the package list | 5.2. Updating the package list | ||
- | + | | |
- | | + | |
5.3. Make sure you have sufficient space for the upgrade | 5.3. Make sure you have sufficient space for the upgrade | ||
- | + | | |
- | | + | |
5.4. Minimal system upgrade | 5.4. Minimal system upgrade | ||
- | + | | |
- | | + | |
5.5. Check functionality | 5.5. Check functionality | ||
- | + | | |
- | See 3.3 above | + | |
5.6. Upgrading the system | 5.6. Upgrading the system | ||
- | + | | |
- | | + | |
5.7. Check functionality | 5.7. Check functionality | ||
- | + | | |
- | See 3.3 above | + | |
===== 6. Possible issues during upgrade ===== | ===== 6. Possible issues during upgrade ===== | ||
Line 150: | Line 112: | ||
6.1. Dist-upgrade fails with “Could not perform immediate configuration” | 6.1. Dist-upgrade fails with “Could not perform immediate configuration” | ||
- | + | | |
- | | + | |
6.2. Expected removals | 6.2. Expected removals | ||
6.3. Conflicts or Pre-Depends loops | 6.3. Conflicts or Pre-Depends loops | ||
- | + | | |
- | use -o APT:: | + | |
- | or | + | # dpkg --remove package_name |
- | # dpkg --remove package_name | + | or |
- | or | + | # apt-get -f install |
- | # apt-get -f install | + | # dpkg --configure --pending |
- | # dpkg --configure --pending | + | or |
- | or | + | # dpkg --install / |
- | # dpkg --install / | + | |
6.4. File conflicts | 6.4. File conflicts | ||
- | + | | |
- | | + | |
6.5. Configuration changes | 6.5. Configuration changes | ||
- | + | | |
- | Usually answer " | + | |
6.6. Change of session to console | 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 ===== | ||
Line 181: | Line 134: | ||
7.1. Install any needed kernel metapackage | 7.1. Install any needed kernel metapackage | ||
- | + | | |
- | Check for meta package | + | # dpkg -l " |
- | + | 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” | |
- | if none are installed check which ones are available | + | # apt-cache show linux-image-amd64 |
- | + | ||
- | | + | |
- | + | ||
- | select correct one based on value returned by running "uname -r" eg. kernel “2.6.32-5-amd64” | + | |
- | + | ||
- | | + | |
===== 8. Preparing for the next release ===== | ===== 8. Preparing for the next release ===== | ||
Line 198: | Line 145: | ||
8.1. Purging removed 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 }' | |
- | get list of removed packages | + | remove using |
- | + | # apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') | |
- | | + | or use |
- | + | # aptitude search ' | |
- | remove using | + | # aptitude purge ' |
- | + | ||
- | | + | |
- | + | ||
- | or use | + | |
- | + | ||
- | | + | |
- | # aptitude purge ' | + | |
===== 9. Obsolete packages ===== | ===== 9. Obsolete packages ===== |