This step-by-step tutorial will show you how to safely upgrade Debian 10 Buster to Debian 11 Bullseye from the command line.
On August 14th, 2021, the Debian project finally released a stable version of Debian 11 Bullseye after over two years of development. It comes with many new features as most of the software in this version has been updated. Debian 11 will receive support for the next five years just like any other Debian stable version.
Let’s now focus on how you can upgrade from Debian 10 Buster to Debian 11 Bullseye. The upgrade process is simple and assumes you are running in the root account.
1. Backup Your System
Please make sure to back up your data. The Debian upgrades are usually safe, but there is always a chance something may go wrong. Therefore, you must have your valuable data safely copied to a backup location, so you can restore it if there are any problems or complications.
You can manually copy important files to a different device (second hard disk, USB drive, another computer on the network, etc.).
You can also create a complete system image of your current Debian installation with a dedicated system imaging software like CloneZilla. If you wish to use any other backup software, you are free to do so. Just make sure your data are placed in a safe location.
2. Update All Currently Installed Packages
Before upgrading from Debian 10 to Debian 11, it’s important to ensure your currently installed Debian 10 system is up to date. Run the following apt
commands in the terminal.
apt update
apt upgrade
apt full-upgrade
Now you can clean any leftover packages.
apt --purge autoremove
Then reboot your Debian 10 for the changes made to apply.
reboot
3. Check the Currently Installed Version
Now we will start by verifying that we are currently using the latest Debian 10.x point release.
The easiest way to check what Debian version you are running is to read the content of the /etc/debian_version
file.
cat /etc/debian_version
10.10
An alternative way is by use of the lsb_release
command. You can use it to display LSB (Linux Standard Base) information about the Linux distribution.
lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
4. Replace Debian 10 with Debian 11 Repositories
The Debian software repositories are defined in the /etc/apt/sources.list
file and the /etc/apt/sources.list.d/
directory. Before starting the upgrade procedure, you must reconfigure them to point to the Debian 11 Bullseye repositories.
It is a good practice before updating the software repositories to backup the current software source list first.
mkdir ~/apt
cp /etc/apt/sources.list ~/apt
cp -r /etc/apt/sources.list.d/ ~/apt
Now you can proceed and update the current Debian 10 Buster repository to point to Debian 11 Bullseye repositories.
sed -i 's/buster/bullseye/g' /etc/apt/sources.list
sed -i 's/buster/bullseye/g' /etc/apt/sources.list.d/*
The commands shown above will replace the buster
keyword with bullseye
in software repositories files.
In Debian 11 Bullseye, the security suite is now named bullseye-security
instead of bullseye/updates
. So you need to locate the following debian-security
lines in the /etc/apt/sources.list
file:
deb http://security.debian.org/debian-security bullseye/updates main
deb-src http://security.debian.org/debian-security bullseye/updates main
And replace them with these:
deb https://deb.debian.org/debian-security/ bullseye-security main
deb-src https://deb.debian.org/debian-security/ bullseye-security main
The final sources.list
file should look like the ones below.
cat /etc/apt/sources.list
deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main
deb http://security.debian.org/debian-security/ bullseye-security main
deb-src http://security.debian.org/debian-security/ bullseye-security main
deb http://deb.debian.org/debian bullseye-updates main
deb-src http://deb.debian.org/debian bullseye-updates main
5. Perform a Minimal System Upgrade First
At this point, your Debian 10 system is ready for the upgrade. The next step is to update the repository to let the system recognize the newly added repo URLs.
apt update
In some cases, doing the full upgrade might remove the large number of packages you want to keep. So the Debian developers recommend a two-part upgrade process to avoid the removal of the packages.
- Part 1: Minimal system upgrade
- Part 2: Full system upgrade
In the minimal upgrade, you will update and upgrade all the available packages without installing or removing any other packages.
To perform the minimal system upgrade first, run the command shown below.
apt upgrade --without-new-pkgs
Keep an eye on the screen. If the apt-listchanges
package is installed, it will show important information about upgraded packages in a pager after downloading the packages.
Press q
after reading to exit the pager and continue the upgrade.
In addition, you will be asked if you want to restart services without asking.
You will also be asked what you want to do with a specific configuration file. If you’re unsure what to do, go with defaults by pressing Enter
key.
6. Upgrade Debian 10 to Debian 11
Once the minimal system upgrade is finished, run the following command to begin the full upgrade.
apt full-upgrade
Do not leave the system unattended because the upgrade process requires various inputs.
You can reboot the system once the Debian 11 upgrade process is completed.
reboot
Log in to the system and check your Debian version.
cat /etc/debian_version
11.0
Or as an alternative way by using the lsb_release
command:
lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
Congratulations! You have successfully upgraded your system from Debian 10 Buster to Debian 11 Bullseye. Your system will now be running Debian 11 Bullseye.
7. Cleaning up Debian 10 Obsolete Packages
It is a good idea to clean your newly upgraded Debian 11 Bullseye system by removing old obsolete packages that are now leftover from your successful upgrade and are not needed anymore.
apt --purge autoremove
apt autoclean
Conclusion
The above tutorial taught you how to upgrade Debian 10 Buster to Debian 11 Bullseye. Now you can enjoy the latest packages and hardware support provided by the latest Debian release.
We have tried to make this tutorial as simple as possible. Thanks for using it.
For additional help or useful information, we recommend you to check the official Debian upgrade documentation.
thank you so very much. the errors that came up were due to my typos. copy and paste works best. again thanks!
Hi,
I’m glad the tutorial was helpful.
Happy Debianing! 🙂
Typos on your sources.list —
deb http://deb.debian.org/debian/ bullseye main <– last "/" should NOT be there.
My apt commands worked once these lines read :
"deb http://deb.debian.org/debian bullseye main"
Hi Rupert,
Thank you for your remark. This guide has been tested many times and has proven to work flawlessly.
However a quick check of the official documentation shows that you are correct.
https://wiki.debian.org/SourcesList
As a matter of fact, both options work – with and without “/”.
Anyway, the correction has been added. Thanks.
Excellent, thank you so much. Worked without a hitch!
Hi Andrew,
I’m glad to have helped you. 🙂
The docker need to upgrade?
Worked well and after reboot I’m off and running, again …on this old already some years ago Asus, …running MX Linux with a Debian Bullseye 11 base. .. Still need to sort out the MX Linux repositories for this upgrade. Keys and signatures, perhaps …just a few more …minuets…;-) .. Clearly presented guide, thanks.
Regarding the changes to the /etc/apt/sources.list file:
The “replacement” lines:
deb https://deb.debian.org/debian-security/ bullseye-security main
deb-src https://deb.debian.org/debian-security/ bullseye-security main
are not the ones shown in your “cat /etc/apt/sources.list” example:
…
deb http://security.debian.org/debian-security/ bullseye-security main
deb-src http://security.debian.org/debian-security/ bullseye-security main
…
They both resolve to a page with the same contents, so probably doesn’t matter
This worked very, very smooth. Thanks for the guidance.
Not this time, but upon upgrading to Buster, I had a problem that others might need to know about. I had separate partitions for /, /home, and /boot. The / partition was big enough for Debian 9 (Stretch, I think) but not for D10 Buster. The attempted upgrade messed up the disk structure. I had to repartition and start over.
It might be safer to use the apt-get command everywhere rather than the apt command. The latter had (maybe still has) the side-effect of doing “apt-get clean” at the end. It may have some other side effects. Please comment.
What a difference a month makes. The upgrade guide from a month before this one required dev mode etc… alot of steps to upgrade. This went very smooth. I performed this upgrade on a Samsung Galaxy Chromebook and am unsure if I have a full version of Bullseye or a limited beta like what the Chromebook originally came with.
Hi !
Updated an headless distant server flawlessly using your tuto.
Thanks !
Great! I’m glad to help.
Thank you for reading Linuxiac!
I’ve been using Debian since slink, I always reinstall fresh. Your guide worked for me! Except for apt: fails to upgrade guile-2.2-libs from buster to bullseye, but that’s not your fault!
If anyone else has this issue run `apt full-upgrade` again…
5.1.21. Upgrades involving libgc1c2 need two runs
Packages that depend on libgc1c2 in buster (e.g. guile-2.2-libs) may be held back during the first full upgrade run to bullseye. Doing a second upgrade normally solves the issue. The background of the issue can be found in bug #988963
Really good Explanation
Does this also work with Debian on raspberry ?
best regards
Hi,
worked for me!
Thanks.
Regards
Question: Can you go from Stretch to Bullseye? My UPS monitors are all Stretch.
Hi Joseph,
Unfortunately, such a direct upgrade by skipping a major version (“Buster”) is not possible. Instead, you would have to upgrade from “Stretch” to “Buster” first and then from that to “Bullseye.”
Best,
Bobby
Hello! Thanks for your guide!
I have also mariadb & PHP on sources.list.d
What can I do?
https://packages.sury.org/php buster InRelease
http://mariadb.mirrors.ovh.net/MariaDB/repo/10.5/debian buster InRelease [
deb [arch=amd64,ppc64el] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.5/debian buster main
deb http://download.opensuse.org/repositories/home:/virtubox:/WordOps/Debian_10/ /
deb https://packages.sury.org/php/ buster main
Hi Ignatios,
Just try to replace “buster” with “bullseye” in sources.list.d.
Best,
Bobby