Troubleshooting “404 Not Found” Errors for Debian 11 Security Updates After Buster to Bullseye Upgrade


2 views

When performing a major version upgrade from Debian 10 (Buster) to Debian 11 (Bullseye), you might encounter this frustrating error when running apt update:

Err:6 http://security.debian.org/debian-security bullseye/updates Release
  404  Not Found

The root cause typically stems from incomplete repository configuration during the upgrade process. The security repository path structure changed between Debian 10 and 11, requiring specific attention during migration.

Here's the complete solution I've verified on multiple production systems:

# First, clean up any partial upgrades
sudo apt clean
sudo apt autoclean

# Verify and correct repository configuration
sudo sed -i 's|debian-security bullseye/updates|bullseye-security|g' /etc/apt/sources.list
sudo sed -i 's|debian-security bullseye/updates|bullseye-security|g' /etc/apt/sources.list.d/*

# For legacy repositories, you might need:
sudo sed -i 's|/updates||g' /etc/apt/sources.list.d/*

# Final verification and update
sudo apt update
sudo apt --fix-broken install

If you maintain multiple repository files, consider this more surgical approach:

#!/bin/bash
# Fix security repositories for Bullseye
for file in /etc/apt/sources.list /etc/apt/sources.list.d/*; do
    if [ -f "$file" ]; then
        sed -i -E \
            -e 's|(https?://security\.debian\.org/)debian-security ([^/]+)/updates|\1\2-security|g' \
            -e 's|(https?://deb\.debian\.org/debian/) [^/]+/updates|\1 bullseye-security|g' \
            "$file"
    fi
done

After applying fixes, verify with:

apt-cache policy | grep security

You should see proper Bullseye security repositories configured:

500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages
  • Mixing old and new repository formats
  • Not cleaning the package cache before retrying
  • Overlooking repository files in /etc/apt/sources.list.d/
  • Forgetting to disable third-party repos during upgrade

When upgrading from Debian 10 (Buster) to Debian 11 (Bullseye), you might encounter a frustrating 404 error when trying to update your security repositories. The error typically looks like this:

Err:6 http://security.debian.org/debian-security bullseye/updates Release
  404  Not Found
Reading package lists... Done
E: The repository 'http://security.debian.org/debian-security bullseye/updates Release' does not have a Release file.

The root cause is that the security repository URL structure changed between Buster and Bullseye. The old format doesn't work anymore, and apt can't find the packages.

Here's how to properly configure your sources.list for Bullseye security updates:

# First, backup your current sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# Then edit the security line to use the new format
sudo sed -i 's|http://security.debian.org/debian-security bullseye/updates|http://security.debian.org/debian-security bullseye-security|g' /etc/apt/sources.list

# Also check any files in sources.list.d
sudo sed -i 's|http://security.debian.org/debian-security bullseye/updates|http://security.debian.org/debian-security bullseye-security|g' /etc/apt/sources.list.d/*

After making these changes, run:

sudo apt update
sudo apt upgrade

You should now see the security updates being properly fetched without any 404 errors.

If you prefer to manually edit the files, here's what your security line should look like in /etc/apt/sources.list:

deb http://security.debian.org/debian-security bullseye-security main contrib
deb-src http://security.debian.org/debian-security bullseye-security main contrib
  • Always create backups before modifying system files
  • Consider using apt-get instead of apt for more verbose output
  • Check for any third-party repositories that might need updating
  • After successful upgrade, run sudo apt autoremove to clean up obsolete packages