New articles: - Python smtplib: Missing Date/Message-ID Headers Break Mail Clients - Fantastical MCP: Permission Denied (macOS Quarantine) - Ubuntu dist-upgrade Repo Quarantine Updated: troubleshooting index, SUMMARY.md nav, WOL article edits. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4 KiB
| title | domain | category | tags | status | created | updated | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ubuntu dist-upgrade Quarantines Third-Party Repos | troubleshooting | ubuntu |
|
published | 2026-04-28 | 2026-04-28 |
Ubuntu dist-upgrade Quarantines Third-Party Repos
Problem
When running do-release-upgrade (e.g., Jammy 22.04 to Noble 24.04), Ubuntu renames all third-party .list files in /etc/apt/sources.list.d/ to .list.distUpgrade. This silently disables every third-party repo — packages from those repos stop receiving updates with no warning.
The upgrade process does this intentionally because it can't guarantee third-party repos will have packages for the new release. Some repos get re-added as .sources files during the upgrade, but many don't.
Symptoms
apt list --upgradableshows nothing for packages you know have updates (e.g., Tailscale stuck on an old version)apt list --installedshows packages as[installed,local]instead of[installed]— the "local" tag means apt has no repo to check for updates.distUpgradefiles accumulate in/etc/apt/sources.list.d/indefinitely
Diagnosis
Check for quarantined repos:
ls /etc/apt/sources.list.d/*.distUpgrade
For each file, check whether a replacement .list or .sources file already exists:
ls /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources
Fix
Distro-agnostic repos (e.g., DigitalOcean agents)
If the repo URL doesn't reference a distro codename (jammy/noble), just rename:
mv /etc/apt/sources.list.d/digitalocean-agent.list.distUpgrade \
/etc/apt/sources.list.d/digitalocean-agent.list
Distro-specific repos (e.g., Tailscale, ondrej-php)
The quarantined file references the old distro (jammy). Re-run the upstream install script to get a correct entry for the new release:
# Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Or manually: update the codename
sed 's/jammy/noble/' /etc/apt/sources.list.d/tailscale.list.distUpgrade \
> /etc/apt/sources.list.d/tailscale.list
apt update && apt upgrade tailscale
Already replaced by .sources
If the upgrade process already created a .sources replacement (common for ubuntu-esm-apps, ondrej-php), the .distUpgrade file is just clutter — delete it:
rm /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list.distUpgrade
After all fixes
apt update
apt list --upgradable # should now show pending updates
apt upgrade
Real-World Example: MajorsHouse Fleet (2026-04-28)
Five Ubuntu 24.04 servers were dist-upgraded from Jammy in October 2024. The .distUpgrade quarantine was discovered 6 months later when Tailscale's website wouldn't load (Pi-hole was blocking subdomains, but the investigation revealed teelia was stuck on Tailscale 1.76.0 — 20 versions behind — because the repo was disabled).
| Host | Quarantined files | Impact |
|---|---|---|
| dcaprod | 8 | Tailscale, DO agents, MySQL, ondrej-php, ESM, vector |
| teelia | 4 | Tailscale (stuck on 1.76.0), DO agents, certbot bionic PPA |
| majorlinux | 8 | Tailscale, DO agents, MySQL, ondrej-php, ESM, apt-fast |
| majortoot | 11 | Tailscale, DO agents, nodesource, PostgreSQL, vector, zabbix, ESM |
| tttpod | 0 | Clean — was likely rebuilt rather than upgraded |
All files were audited, stale ones deleted, distro-agnostic repos renamed, and distro-specific repos re-added via upstream install scripts. DO agents upgraded from 3.16.11 to 3.18.12, teelia's Tailscale jumped from 1.76.0 to 1.96.4.
Prevention
- Post-upgrade audit: After any
do-release-upgrade, immediately runls /etc/apt/sources.list.d/*.distUpgradeand resolve each file. - Prefer
.sourcesformat: When adding new third-party repos, use the DEB822.sourcesformat — it's what Ubuntu itself uses on Noble and is handled more gracefully during upgrades. - Ansible playbook: Consider a post-upgrade play that checks for
.distUpgradefiles and alerts or auto-fixes distro-agnostic repos.