Enable deb-multimedia on Debian only when the official Debian multimedia stack cannot provide the codec, encoder, or package build you need. The repository is useful for specific media workloads, but it can also replace Debian’s own FFmpeg, VLC, and shared multimedia libraries because many deb-multimedia packages use higher version epochs.
Debian 13 (trixie), Debian 12 (bookworm), and Debian 11 (bullseye) can use the current deb-multimedia keyring and DEB822 source format. Treat the repository as a deliberate package-source change, not as a harmless codec checkbox, especially on production workstations or systems you plan to upgrade in place later.
Deb-multimedia is not an official Debian archive. Before adding it, try Debian’s official packages first, including the official contrib and non-free components when your package needs them. If you add deb-multimedia, review APT’s package plan before installing or upgrading anything from it.
Decide Whether Deb-Multimedia Fits Your Debian System
Deb-multimedia is best reserved for cases where you can name the package or codec gap you are trying to solve. Common examples include a deb-multimedia FFmpeg build, a package version that Debian stable does not ship, or multimedia software built with non-free components. If common MP3, H.264, or desktop video playback already works, enabling another APT repository may add more risk than value.
| Choice | What Changes | Best Fit |
|---|---|---|
| Official Debian packages first | Keeps packages from Debian’s own archive and security updates | Most desktops, servers, and systems that only need common playback |
| Deb-multimedia at normal APT priority | Allows deb-multimedia packages to replace Debian multimedia packages during installs and upgrades | Users who specifically want the deb-multimedia multimedia stack |
| Deb-multimedia with a low-priority pin | Keeps the repository visible but prevents automatic replacement by default | Users who want to inspect packages first or avoid broad library changes |
The upstream deb-multimedia instructions include an apt dist-upgrade step after adding the repository. Do not run a full upgrade until you understand which packages APT wants to replace. A simulation step later in the workflow shows the exact packages that would come from deb-multimedia before you confirm any install.
Enable Deb-Multimedia Repository on Debian
This setup follows the current deb-multimedia.org repository instructions: install the deb-multimedia keyring package, create a DEB822 source file under /etc/apt/sources.list.d/, refresh APT, and verify the repository with package-manager output.
Confirm Your Debian Release and Architecture
Check the release codename and architecture before writing any APT source file:
. /etc/os-release
printf 'Debian %s (%s)\n' "$VERSION_ID" "$VERSION_CODENAME"
dpkg --print-architecture
On Debian 13 amd64, relevant output looks like:
Debian 13 (trixie) amd64
The current repository metadata publishes trixie, bookworm, and bullseye suites for amd64 and several other Debian architectures. If your codename is not one of those three, stop and check the deb-multimedia distribution index before adding the source.
Check for Existing Deb-Multimedia Sources
Do not keep extrepo, old manual files, and the new manual source active together. Duplicate entries can create APT warnings or Signed-By conflicts, and the old debian-multimedia.org domain should not be used.
grep -R "deb-multimedia.org\|debian-multimedia.org" /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null || true
If the output shows debian-multimedia.org, remove that legacy entry before continuing. If the output shows deb-multimedia.org from an older LinuxCapable manual source or an extrepo source, disable it before creating the current dmo.sources file:
if command -v extrepo >/dev/null 2>&1; then
sudo extrepo disable deb-multimedia || true
fi
sudo rm -f /etc/apt/sources.list.d/deb-multimedia.sources
sudo rm -f /etc/apt/sources.list.d/extrepo_deb-multimedia.sources
sudo rm -f /etc/apt/sources.list.d/deb-multimedia.list
sudo rm -f /etc/apt/sources.list.d/dmo.list
The cleanup removes common dedicated deb-multimedia files. If the earlier search shows a deb-multimedia line inside a broader file such as /etc/apt/sources.list, edit that file and remove only the deb-multimedia line before continuing.
The dedicated Debian extrepo repository management guide covers extrepo itself. For deb-multimedia, the manual source is clearer because readers can see the exact repository URI, suite, components, architecture, and signing key path.
Install Repository Prerequisites
Install the HTTPS certificate and download tools needed for the keyring package:
Use a sudo-capable account for these commands. If Debian reports that your user is not in the sudoers file, fix administrative access first with the Debian sudoers setup guide instead of switching randomly between root and sudo commands.
sudo apt update
sudo apt install ca-certificates curl
ca-certificates lets APT and curl validate HTTPS connections. curl downloads the keyring package; the curl command guide explains the download flags if you want more detail.
Download and Verify the Deb-Multimedia Keyring
Download the current keyring package into /tmp:
curl -fsSLo /tmp/deb-multimedia-keyring_2024.9.1_all.deb https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2024.9.1_all.deb
Verify the SHA256 checksum with sha256sum -c so the check fails automatically if the file does not match the value published by deb-multimedia:
printf '%s %s\n' \
'8dc6cbb266c701cfe58bd1d2eb9fe2245a1d6341c7110cfbfe3a5a975dcf97ca' \
'/tmp/deb-multimedia-keyring_2024.9.1_all.deb' | sha256sum -c -
A successful check returns:
/tmp/deb-multimedia-keyring_2024.9.1_all.deb: OK
If the checksum check fails, delete the downloaded file and re-check the package directory before trying again. Do not install a keyring package that fails the integrity check.
If deb-multimedia publishes a newer keyring package, check the deb-multimedia-keyring package directory and verify the new checksum before installing it. Do not guess a future filename.
Install the Deb-Multimedia Keyring Package
Install the downloaded keyring package with APT so local package handling stays consistent with Debian package-management behavior:
sudo apt install /tmp/deb-multimedia-keyring_2024.9.1_all.deb
Confirm that the package installed the signing key where the source file will reference it:
dpkg -L deb-multimedia-keyring | grep '/usr/share/keyrings/deb-multimedia-keyring.pgp'
The keyring path should be:
/usr/share/keyrings/deb-multimedia-keyring.pgp
Create the Deb-Multimedia DEB822 Source
Create /etc/apt/sources.list.d/dmo.sources with your Debian codename and architecture. The command runs in a subshell so an unsupported codename stops the file write without closing your terminal session.
(
. /etc/os-release
case "$VERSION_CODENAME" in
trixie|bookworm|bullseye) ;;
*) printf 'Unsupported Debian codename: %s\n' "$VERSION_CODENAME"; exit 1 ;;
esac
printf '%s\n' \
'Types: deb' \
'URIs: https://www.deb-multimedia.org' \
"Suites: $VERSION_CODENAME" \
'Components: main non-free' \
"Architectures: $(dpkg --print-architecture)" \
'Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp' \
'Enabled: yes' | sudo tee /etc/apt/sources.list.d/dmo.sources > /dev/null
)
Inspect the source file before refreshing APT:
cat /etc/apt/sources.list.d/dmo.sources
On Debian 13 amd64, the file should contain:
Types: deb URIs: https://www.deb-multimedia.org Suites: trixie Components: main non-free Architectures: amd64 Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp Enabled: yes
Refresh APT and Confirm Deb-Multimedia Metadata
Refresh package metadata:
sudo apt update
Debian 13 relevant output includes the new deb-multimedia source:
Get:4 https://www.deb-multimedia.org trixie InRelease [18.6 kB] Get:5 https://www.deb-multimedia.org trixie/main amd64 Packages [136 kB] Get:6 https://www.deb-multimedia.org trixie/main Translation-en [93.8 kB] Get:7 https://www.deb-multimedia.org trixie/non-free amd64 Packages [1,504 B] Get:8 https://www.deb-multimedia.org trixie/non-free Translation-en [1,406 B] Reading package lists...
Use apt-cache policy to prove APT can see both Debian’s official package and the deb-multimedia package:
apt-cache policy ffmpeg
On Debian 13, relevant output shows deb-multimedia as the candidate at normal priority:
ffmpeg:
Installed: (none)
Candidate: 10:7.1.4-dmo1+deb13u1
Version table:
10:7.1.4-dmo1+deb13u1 500
500 https://www.deb-multimedia.org trixie/main amd64 Packages
7:7.1.3-0+deb13u1 500
500 http://deb.debian.org/debian trixie/main amd64 Packages
500 http://security.debian.org/debian-security trixie-security/main amd64 Packages
The important detail is the candidate line. At normal priority, the higher 10: epoch from deb-multimedia wins over Debian’s 7: FFmpeg build.
Review Deb-Multimedia Package Impact Before Installing
APT can simulate the install plan without changing your system. Run the simulation before installing a multimedia package, especially packages with many shared libraries.
apt-get -s install ffmpeg
On Debian 13, relevant lines show FFmpeg and several FFmpeg libraries moving to deb-multimedia:
Inst libswscale8 [7:7.1.3-0+deb13u1] (10:7.1.4-dmo1+deb13u1 Unofficial Multimedia Packages:13.4/stable [amd64]) [] Inst libswresample5 [7:7.1.3-0+deb13u1] (10:7.1.4-dmo1+deb13u1 Unofficial Multimedia Packages:13.4/stable [amd64]) [] Inst libavformat61 [7:7.1.3-0+deb13u1] (10:7.1.4-dmo1+deb13u1 Unofficial Multimedia Packages:13.4/stable [amd64]) [] Inst libavcodec61 [7:7.1.3-0+deb13u1] (10:7.1.4-dmo1+deb13u1 Unofficial Multimedia Packages:13.4/stable [amd64]) [] Inst libavutil59 [7:7.1.3-0+deb13u1] (10:7.1.4-dmo1+deb13u1 Unofficial Multimedia Packages:13.4/stable [amd64]) [] Inst ffmpeg (10:7.1.4-dmo1+deb13u1 Unofficial Multimedia Packages:13.4/stable [amd64])
If the simulation wants to remove desktop applications, codec libraries you still need, or a large set of unrelated packages, stop and reconsider the repository change. A small package can still pull major multimedia libraries behind it.
Install a Deb-Multimedia Package After Reviewing the Plan
Install the package only after the simulation output matches what you expect. For FFmpeg, the install command is:
sudo apt install ffmpeg
Use the same simulation-first approach for VLC, mpv, Kodi, HandBrake, and other packages that deb-multimedia publishes. The package name alone does not tell you how many libraries APT will replace.
Search Deb-Multimedia Package Versions
apt-cache madison is useful when you want a compact version list for a package before installing it:
apt-cache madison vlc
On Debian 13, relevant output shows the deb-multimedia VLC build above Debian’s official build:
vlc | 1:3.0.23-dmo0+deb13u1 | https://www.deb-multimedia.org trixie/main amd64 Packages
vlc | 3.0.23-0+deb13u1 | http://deb.debian.org/debian trixie/main amd64 Packages
vlc | 3.0.23-0+deb13u1 | http://security.debian.org/debian-security trixie-security/main amd64 Packages
The -dmo suffix identifies deb-multimedia packages. The version numbers differ by Debian release, so always check the package on the system you are changing.
Protect Debian Packages with an Optional APT Pin
An APT preferences file can lower deb-multimedia’s priority so Debian’s official packages stay the default candidates. Add this pin before installing anything from deb-multimedia when you only want to inspect the repository or prevent accidental replacements during routine upgrades.
printf '%s\n' \
'Package: *' \
'Pin: release o=Unofficial Multimedia Packages' \
'Pin-Priority: 100' | sudo tee /etc/apt/preferences.d/dmo-low-priority.pref > /dev/null
Check FFmpeg again after adding the pin:
apt-cache policy ffmpeg
On Debian 13, Debian’s official package becomes the candidate while the deb-multimedia package remains visible at priority 100:
ffmpeg:
Installed: (none)
Candidate: 7:7.1.3-0+deb13u1
Version table:
10:7.1.4-dmo1+deb13u1 100
100 https://www.deb-multimedia.org trixie/main amd64 Packages
7:7.1.3-0+deb13u1 500
500 http://deb.debian.org/debian trixie/main amd64 Packages
500 http://security.debian.org/debian-security trixie-security/main amd64 Packages
The pin is most useful before you install packages from deb-multimedia. If a deb-multimedia package is already installed, the pin does not downgrade it back to Debian’s version; use the removal and downgrade section later in the article for that cleanup.
The low-priority pin is a safety guard, not a simple codec-install method. If you want plain
sudo apt install ffmpegto choose deb-multimedia, remove the pin first and run the simulation again.
Remove the pin if you intentionally want normal deb-multimedia priority:
sudo rm -f /etc/apt/preferences.d/dmo-low-priority.pref
Update Deb-Multimedia Packages Safely on Debian
After the repository is active, normal APT refreshes include deb-multimedia metadata:
sudo apt update
Before a system upgrade, inspect which installed packages already come from deb-multimedia:
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' | grep '^ii .*dmo' || echo "No installed deb-multimedia packages found"
Use an upgrade simulation when the package list looks broad or when APT proposes removals:
apt-get -s full-upgrade
If the simulation shows the package replacements you expect, run the real upgrade and review the prompt carefully:
sudo apt full-upgrade
Avoid auto-confirming a full upgrade with -y on systems that use deb-multimedia. The package list is the safety check.
Troubleshoot Deb-Multimedia on Debian
APT Reports a Missing Key or Unsigned Repository
Key errors usually mean the keyring package is not installed, the source file points at the wrong Signed-By path, or APT has not refreshed after the file changed. Check both the package and the source file:
dpkg -l deb-multimedia-keyring | grep '^ii'
ls -l /usr/share/keyrings/deb-multimedia-keyring.pgp
cat /etc/apt/sources.list.d/dmo.sources
The Signed-By line must be /usr/share/keyrings/deb-multimedia-keyring.pgp. Reinstall the keyring package if the keyring file is missing, then rerun sudo apt update.
APT Shows Duplicate Source or Signed-By Warnings
Duplicate-source warnings happen when more than one file points at the same deb-multimedia repository. Search for every active reference:
grep -R "deb-multimedia.org" /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null || true
Keep one current source file. If the duplicate comes from extrepo, disable that entry and remove the generated file before refreshing APT:
if command -v extrepo >/dev/null 2>&1; then
sudo extrepo disable deb-multimedia || true
fi
sudo rm -f /etc/apt/sources.list.d/extrepo_deb-multimedia.sources
sudo rm -f /etc/apt/sources.list.d/deb-multimedia.list
sudo rm -f /etc/apt/sources.list.d/dmo.list
sudo apt update
The Old Debian-Multimedia Domain Appears in APT Sources
The old debian-multimedia.org domain is not the current repository. Debian’s official project blog warned users to remove that old domain after it expired and was registered outside Debian’s control. Search for it explicitly:
grep -R "debian-multimedia.org" /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null || true
Remove any matching line or file, then run sudo apt update. Use deb-multimedia.org only if you have decided to enable the current repository.
APT Still Chooses Debian Packages After Adding Deb-Multimedia
If Debian’s official package remains the candidate, check whether you added the low-priority pin:
if [ -f /etc/apt/preferences.d/dmo-low-priority.pref ]; then
cat /etc/apt/preferences.d/dmo-low-priority.pref
else
echo "No deb-multimedia low-priority pin found"
fi
That pin is intentional when you want to prevent automatic replacements. Remove it only when you are ready for deb-multimedia packages to become normal candidates:
sudo rm -f /etc/apt/preferences.d/dmo-low-priority.pref
sudo apt update
apt-cache policy ffmpeg
APT Reports Hash Sum Mismatch or Temporary Connection Errors
Repository sync delays, stale proxy caches, DNS changes, or temporary network failures can trigger hash or connection errors. Retry after a short wait:
sudo apt update
If the error persists, check the main deb-multimedia homepage and the deb-multimedia distribution index to confirm the suite is currently available. Avoid bypassing APT signature, date, or hash checks as a normal fix.
Remove Deb-Multimedia and Restore Debian Packages
Removing the source stops future deb-multimedia candidates, but it does not automatically downgrade packages already installed from the repository. List installed deb-multimedia packages first so you know what still needs attention:
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' | grep '^ii .*dmo' || echo "No installed deb-multimedia packages found"
Remove the Deb-Multimedia Source and Keyring
Remove the source file, any optional pin, older article-created source names, optional extrepo key material, and the keyring package when it is installed:
sudo rm -f /etc/apt/sources.list.d/dmo.sources
sudo rm -f /etc/apt/sources.list.d/deb-multimedia.sources
sudo rm -f /etc/apt/sources.list.d/extrepo_deb-multimedia.sources
sudo rm -f /etc/apt/sources.list.d/deb-multimedia.list
sudo rm -f /etc/apt/sources.list.d/dmo.list
sudo rm -f /etc/apt/preferences.d/dmo-low-priority.pref
sudo rm -f /var/lib/extrepo/keys/deb-multimedia.asc
if dpkg-query -W -f='${db:Status-Abbrev}\n' deb-multimedia-keyring 2>/dev/null | grep -q '^ii'; then
sudo apt remove deb-multimedia-keyring
fi
sudo apt update
Verify that the deb-multimedia source no longer appears for FFmpeg:
apt-cache policy ffmpeg
On a Debian 13 system without FFmpeg installed, source cleanup leaves only Debian sources in the version table:
ffmpeg:
Installed: (none)
Candidate: 7:7.1.3-0+deb13u1
Version table:
7:7.1.3-0+deb13u1 500
500 http://deb.debian.org/debian trixie/main amd64 Packages
500 http://security.debian.org/debian-security trixie-security/main amd64 Packages
If FFmpeg is already installed from deb-multimedia, the Installed line may still show a -dmo version. The repository source is gone when the version table no longer lists deb-multimedia.org.
Downgrade Common FFmpeg Packages Back to Debian
If FFmpeg came from deb-multimedia, downgrade the package set that matches your Debian release after the deb-multimedia source has been removed and APT has been refreshed. Review APT’s plan before confirming because additional applications may depend on the current multimedia libraries.
Debian 13 (trixie):
sudo apt install --allow-downgrades ffmpeg libavcodec61 libavformat61 libavutil59 libswresample5 libswscale8
Debian 12 (bookworm):
sudo apt install --allow-downgrades ffmpeg libavcodec59 libavformat59 libavutil57 libswresample4 libswscale6
Debian 11 (bullseye):
sudo apt install --allow-downgrades ffmpeg libavcodec58 libavformat58 libavutil56 libswresample3 libswscale5
These FFmpeg examples do not cover every possible deb-multimedia package. If the earlier
dpkg-querycheck still lists installed-dmopackages, inspect each package withapt-cache policy package-name. Downgrade it when Debian has a candidate, or remove it when it exists only in deb-multimedia and no application still needs it.
After downgrading, check again for remaining deb-multimedia packages:
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' | grep '^ii .*dmo' || echo "No installed deb-multimedia packages found"
If APT says packages are no longer needed, preview the cleanup before removing anything:
sudo apt autoremove --dry-run
Run the real autoremove only after the preview lists packages you actually expect to remove:
sudo apt autoremove
Background on Deb-Multimedia and Debian
Deb-multimedia is maintained outside the Debian Project. The repository moved from the old debian-multimedia.org domain to deb-multimedia.org years ago, and Debian’s official blog later warned users to remove the old expired domain from APT sources. That history is one reason current setup should use explicit source files and a dedicated keyring path instead of legacy source-list entries.
Package support also belongs to the repository maintainer and upstream projects, not Debian’s bug tracker. If a package installed from deb-multimedia breaks, check whether the issue reproduces with Debian’s official package before filing a Debian bug report.
Related Debian Guides
- Enable contrib and non-free repositories on Debian if the package you need is already available from Debian’s official archive components.
- Install FFmpeg on Debian for the normal Debian FFmpeg workflow before switching to a third-party multimedia repository.
- Install Debian backports and experimental repositories when you need newer official Debian packages instead of deb-multimedia builds.
Conclusion
Deb-multimedia is available on Debian with a verified keyring, a DEB822 source file, and package-impact checks before install. Keep it for systems that truly need the repository’s multimedia builds; otherwise, Debian’s official components, FFmpeg packages, and backports are usually easier to maintain and much simpler to roll back.


I learned how to do this the old school-way. Editing a txt type file.The very old-way!