How to Upgrade Debian 10 (Buster) to Debian 11 (Bullseye)

Debian 11, codenamed ‘bullseye’ was released on August 10th and is available for download. Debian 11 ships with a number of significant software improvements and enhancements including:

  • Support a wide range of architectures including 64-bit ARM (arm64), ARMv7, 64-bit little-endian MIPS, IBM System Z, 64-bit& 32-bit systems, among others.
  • A new ‘homeworld’ theme that was inspired by an art style born in Germany called the Bauhaus movement.
  • The current Linux Kernel 5.10 LTS brings better hardware support and performance enhancement.
  • Newer versions of Desktop environments: MATE 1.24, GNOME 3.38, KDE Plasma 5.20, LXDE 11, Xfce 4.16 and, LXQt 0.16.
  • Major package updates: numerous software packages have newer versions in Debian Bullseye. For example, it comes with Apache 2.4.48, LibreOffice 7.0, Nginx 1.18, Python 3.9.1, among others.
  • Support for the exFAT filesystem.

For further information, check the Debian 11 “bullseye” release notes

Step 1: Backup all your Debian 10 files

It’s always a good idea to ensure all your files have a backup before upgrading to a new OS release. This protects our files in the event that something goes wrong during the upgrade process.

Step 2: Update package lists & Upgrade packages

First, let’s confirm that our system is running on Debian 10. Run:

$ cat /etc/os-release

Current Debian version

You can also run the command:

$ cat /etc/debian_version

Next, use the following commands to update and upgrade the software packages:

$ sudo apt update -y && sudo apt upgrade -y

Next, let’s run the dist-upgrade command below. This command upgrades system packages and also handles changing dependencies with new versions of packages installed.

$ sudo apt dist-upgrade

Dist Upgrade

Step 3: Update Package Repository

In Debian systems, repositories are listed in the /etc/apt/sources.list file and /etc/apt/sources.list.d/ directory. We need to update the package repository from Debian buster to Debian bullseye repositories.

To accomplish this, we will need to replace the buster keyword in the /etc/apt/sources.list file with bullseye as shown below:

$ sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list

Then, find the following Debian security lines in the sources.list file:

deb bullseye/updates main
deb-src bullseye/updates main

Replace the above lines with:

deb bullseye-security main contrib
deb-src bullseye-security main contrib

Save and close the file.

After that, the updated sources.list file will now look as shown below:

deb bullseye main
deb-src bullseye main
deb bullseye-security main contrib
deb-src bullseye-security main contrib
deb bullseye-updates main
deb-src bullseye-updates main
deb bullseye-backports main
deb-src bullseye-backports main

Debian sources.list

Next, update the system’s packages list by running:

$ sudo apt update

Step 4: Perform a minimal system upgrade

Performing a full system upgrade will remove a large number of packages that you may wish to retain in your system. Therefore, we take a two-stage approach to upgrade Debian 10 to Debian 11. This two-stage approach consists of a minimal upgrade and a full upgrade.

During the minimal upgrade, the current packages will be upgraded without installing new ones or removing the existing ones. Execute the following command to perform a minimal upgrade:

$ sudo apt upgrade --without-new-pkgs

Upgrade old packages

During this process, a screen will pop up asking you to restart system services or keep or erase config options. This interruption occurs when libraries such as libpam and libc are being upgraded. Click ‘Yes’ and press ENTER

Step 5) Perform full upgrade to Debian 11

Now that the minimal upgrade is complete, we perform a full system upgrade to upgrade our system to Debian 11. It installs the latest packages that come with Debian 11 and resolves dependency issues.

$ sudo apt full-upgrade

apt full upgrade

Several prompts will appear once again. In this example, we need to choose what we want to do with the Openssh-server file. I selected the option to keep the local version that is currently installed.

keep current sshd config file

After the full-upgrade is complete, reboot the system as shown,

$ sudo reboot

Now let’s verify if we have upgraded to Debian Bullseye:

$ cat /etc/os-release
$ cat /etc/debian_version

New OS release info

From the output, the system is now running Debian 11 Bullseye.

$ lsb_release -a

LSB release


You have successfully upgraded to Debian 10(bullseye). You can now install your preferred applications and keep using Debian 11.