How to Enable deb-multimedia on Debian 13, 12 and 11

Add deb-multimedia to Debian 13, 12, or 11 using extrepo or manual setup. Covers FFmpeg, VLC, codec support, and removal steps.

Last updatedAuthorJoshua JamesRead time9 minGuide typeDebianDiscussion1 comment

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.

ChoiceWhat ChangesBest Fit
Official Debian packages firstKeeps packages from Debian’s own archive and security updatesMost desktops, servers, and systems that only need common playback
Deb-multimedia at normal APT priorityAllows deb-multimedia packages to replace Debian multimedia packages during installs and upgradesUsers who specifically want the deb-multimedia multimedia stack
Deb-multimedia with a low-priority pinKeeps the repository visible but prevents automatic replacement by defaultUsers 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 ffmpeg to 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-query check still lists installed -dmo packages, inspect each package with apt-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.

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.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show more of our fresh Linux tutorials in Top Stories and From your sources when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee

1 thought on “How to Enable deb-multimedia on Debian 13, 12 and 11”

Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Verify before posting: