How to Upgrade from Debian 11 to Debian 12
Introduction
Upgrading your Debian operating system ensures your server runs with the latest security patches, performance enhancements, and software updates. Debian 12 offers up-to-date system driver packages and kernel versions with better stability and performance.
This article explains how to upgrade from Debian 11 to Debian 12 and migrate all existing packages with minimal downtime.
Prerequisites
Before you begin:
Deploy a Debian 11 instance on Vultr to test the upgrade process.
Access the instance using SSH as a non-root user with sudo privileges.
Verify that your instance has at least
2GB
of available space.console$ df -h
Your output should be similar to the one below:
Filesystem Size Used Avail Use% Mounted on udev 462M 0 462M 0% /dev tmpfs 96M 1.9M 94M 2% /run /dev/vda2 23G 5.1G 17G 23% / tmpfs 480M 0 480M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda1 511M 12M 500M 3% /boot/efi tmpfs 96M 0 96M 0% /run/user/0
Create a Full Server Backup
Upgrading to Debian 12 can corrupt existing server packages that may be incompatible with the new operating system. A snapshot is a point-in-time copy of your instance state and file system used for versioning and backup purposes. Follow the steps below to take a new snapshot and recover your instance in case the upgrade process fails.
Open the Vultr Customer Portal.
Click Products and select Compute on the main navigation menu.
Select your target Debian 11 instance to open its management page.
Navigate to the Snapshots tab.
Enter a new snapshot label in the Label field and click Take Snapshot.
Monitor the snapshot's progress and verify the status changes from Pending to Available.
You have created a new snapshot you can use to recover your original instance state in case of any upgrade failures. Use backup tools such as
rsync
ortar
on a physical server to back up your instance data before starting the upgrade process.
Test the Compatibility of Installed Applications
Some applications may be incompatible with Debian 12. Follow the steps below to verify the installed applications on your server and ensure compatibility with Debian 12.
View the official application documentation sources: Visit each application's official documentation or releases page to verify it's compatible with Debian 12.
Test in a sandbox environment: Replicate your existing environment on Debian 12 to identify any runtime or configuration issues.
Verify the installed packages: Run the following command to view all installed applications and software packages on your server and export the list to a single
.txt
file.console$ sudo dpkg --get-selections > installed-packages.txt
View the file contents to verify the installed packages.
console$ cat installed-packages.txt
Pre-upgrade Preparation
Server preparation enables you to upgrade all existing packages for a smooth and successful upgrade. Follow the steps below to update your server packages and prepare for the system upgrade.
Update the server's package information index.
console$ sudo apt update -y
Upgrade all installed packages to the latest versions.
console$ sudo apt upgrade -y
Perform a full upgrade to resolve potential dependency issues and install or remove specific packages.
console$ sudo apt full-upgrade -y
Remove any orphaned dependency packages to prevent potential conflicts during the upgrade process.
console$ sudo apt autoremove -y
Remove cached packages.
console$ sudo apt clean
Upgrade from Debian 11 to Debian 12
Upgrading from Debian 11 to Debian 12 may take between 30
to 60
minutes depending on the number of packages on your server. Follow the steps below to upgrade from Debian 11 to Debian 12.
View your server's distribution version and verify that it's Debian 11 (
bullseye
).console$ lsb_release -a
Output:
Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye
Update the
/etc/apt/sources.list
file and any files within/etc/apt/sources.list.d/
directory frombullseye
(Debian 11) tobookworm
(Debian 12).console$ sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list && sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*
Update the server's package information index.
console$ sudo apt update
Upgrade the server to Debian 12.
console$ sudo apt upgrade
Press Space to browse the
apt-listchanges: News
options and press Y to close the pager. When prompted, reply to each of the following prompts:Character set to support: Press Enter to use the default keyboard layout.
Restart services during package upgrades without asking?: Select
Yes
and press Enter to continue with the upgrade process.What do you want to do about modified configuration file ssh_config?: Select
install the package maintainer's version
and press Tab to select OK and press Enter.What do you want to do about modified configuration file grub?: Select
install the package maintainer's version
, select OK, and press Enter.Configuration file '/etc/ntpsec/ntp.conf
: Enter Y and press Enter to install the NTP package maintainer's version.Configuration file '/etc/ntpsec/ntp.conf' ==> File on system created by you or by a script. ==> File also in package provided by package maintainer. What would you like to do about it ? Your options are: Y or I : install the package maintainer's version N or O : keep your currently-installed version D : show the differences between the versions Z : start a shell to examine the situation The default action is to keep your current version. *** ntp.conf (Y/I/N/O/D/Z) [default=N] ? Y
Perform a full upgrade of all packages on the server.
console$ sudo apt full-upgrade -y
The above command upgrades all installed packages to their latest versions, installs new packages, and removes any conflicting or obsolete packages.
Remove any unnecessary packages and clear the package cache.
console$ sudo apt autoremove -y && sudo apt clean -y
View your server's distribution version and verify you have upgraded to Debian 12 (
bookworm
).console$ lsb_release -a
Output:
Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
Restart the server to apply all changes.
console$ sudo reboot
Test the Upgraded Debian 12 Server
Follow the steps below to test the upgraded Debian server and verify that all packages run correctly with the latest versions.
View your server distribution version and verify that it's Debian 12 (
bookworm
).console$ lsb_release -a
Output:
Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
Debian 12 (
bookworm
) is the active operating system version on your server based on the above output.View the updated Linux kernel version.
console$ uname -r
Output:
5.10.0-31-amd64
Test access to a common domain such as
google.com
to verify network connectivity.console$ ping -c 4 google.com
Output:
PING google.com(2c0f:fb50:4002:81d::200e (2c0f:fb50:4002:81d::200e)) 56 data bytes 64 bytes from 2c0f:fb50:4002:81d::200e (2c0f:fb50:4002:81d::200e): icmp_seq=1 ttl=59 time=0.745 ms 64 bytes from 2c0f:fb50:4002:81d::200e (2c0f:fb50:4002:81d::200e): icmp_seq=2 ttl=59 time=0.758 ms 64 bytes from 2c0f:fb50:4002:81d::200e (2c0f:fb50:4002:81d::200e): icmp_seq=3 ttl=59 time=0.798 ms 64 bytes from 2c0f:fb50:4002:81d::200e (2c0f:fb50:4002:81d::200e): icmp_seq=4 ttl=59 time=0.775 ms --- google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 0.745/0.769/0.798/0.019 ms
Conclusion
You have upgraded your server from Debian 11 to Debian 12. Upgrading your operating system version ensures that your server receives the latest security patches and updates to improve the system's performance. For more information, visit the Debian upgrade documentation.