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

The deb-multimedia.org repository provides multimedia packages for Debian that are either unavailable in the official archives or built with additional features. Common examples include FFmpeg compiled with extra codec support (x264, x265, AAC, and proprietary formats), enhanced builds of VLC, and various audio/video tools with non-free components enabled. This makes the repository useful for video editing, media transcoding, and playing content that requires codecs Debian cannot distribute for licensing reasons.

This guide walks through adding the deb-multimedia repository to your Debian system, installing packages from it, and removing it when no longer needed.

These instructions cover Debian 13 (Trixie), Debian 12 (Bookworm), and Debian 11 (Bullseye). If you use extrepo, it detects your Debian release and configures the matching repository suite automatically. If you use the manual method, this guide uses your system codename from /etc/os-release. Debian 10 (Buster) and older releases have been moved to the deb-multimedia archive.

Choose Your Installation Method

You can add the deb-multimedia repository using two methods. The extrepo method handles GPG key management automatically and is simpler for most users. The manual method provides more control over the configuration and works in environments where extrepo is unavailable.

Adding deb-multimedia replaces several official Debian packages with modified versions. Due to higher version epochs, these packages take priority during upgrades and cannot be easily reverted using standard APT commands. If you later decide to remove the repository, you will need to manually downgrade affected packages back to official Debian versions. Consider whether the additional codec support justifies this trade-off for your use case.

MethodGPG Key ManagementConfiguration FormatBest For
extrepo (Recommended)AutomaticDEB822 .sourcesMost users; simple setup with automatic key handling
Manual RepositoryManual downloadDEB822 .sourcesScripted deployments, custom configurations, or systems without extrepo

We recommend the extrepo method for most users because it downloads and verifies the signing key automatically, reducing the chance of configuration errors. Use the manual method if you need explicit control over the APT source configuration or you are scripting the setup.

Method 1: Add Deb-Multimedia with extrepo (Recommended)

The extrepo tool is Debian’s official utility for managing external repositories. It maintains a curated list of third-party sources and handles GPG key downloads automatically.

Install extrepo

Update your package index and install extrepo:

sudo apt update
sudo apt install extrepo

Enable Non-Free Policy (Required)

By default, extrepo only enables repositories with free software. The deb-multimedia repository includes a non-free component containing packages with proprietary codecs or restrictive licenses. Enable the non-free policy to access these packages:

sudo sed -i 's/# - non-free/- non-free/' /etc/extrepo/config.yaml

This command uncomments the non-free line in extrepo’s configuration, allowing it to enable repositories that contain non-free packages.

Enable the Deb-Multimedia Repository

Enable the repository with a single command:

sudo extrepo enable deb-multimedia

Extrepo creates a configuration file at /etc/apt/sources.list.d/extrepo_deb-multimedia.sources and downloads the GPG signing key to /var/lib/extrepo/keys/.

Update Package Index

Refresh your package lists to include packages from the new repository:

sudo apt update

Example output (truncated) showing the repository was added successfully:

Get:4 https://www.deb-multimedia.org trixie InRelease [18.6 kB]
Get:5 https://www.deb-multimedia.org trixie/main amd64 Packages [137 kB]
Get:6 https://www.deb-multimedia.org trixie/non-free amd64 Packages [1504 B]

The suite name in your output (trixie, bookworm, or bullseye) reflects your Debian version. Extrepo automatically detects and configures the correct suite.

Method 2: Add Deb-Multimedia Manually

The manual method gives you direct control over the repository configuration. Use this approach for scripted deployments, air-gapped systems, or when you prefer explicit configuration.

Install Prerequisites

Install the tools needed for secure repository configuration:

sudo apt update
sudo apt install ca-certificates curl

These packages provide HTTPS support (ca-certificates) and file downloading (curl).

Install the Deb-Multimedia Keyring Package

Deb-multimedia publishes an APT keyring package. Installing it places the repository signing key under /usr/share/keyrings/, which is the preferred approach for modern APT setups.

Download the keyring package:

cd /tmp
curl -fsSLO https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2024.9.1_all.deb

Verify the download integrity before installing. This confirms the package was not corrupted or tampered with during transfer:

sha256sum deb-multimedia-keyring_2024.9.1_all.deb

Expected checksum output for version 2024.9.1:

8dc6cbb266c701cfe58bd1d2eb9fe2245a1d6341c7110cfbfe3a5a975dcf97ca  deb-multimedia-keyring_2024.9.1_all.deb

If the checksum matches, install the keyring package:

sudo dpkg -i deb-multimedia-keyring_2024.9.1_all.deb

If the download URL changes (new keyring package version), check the deb-multimedia-keyring package directory for the latest _all.deb filename. You will also need to verify the new checksum from a trusted source or compare against multiple downloads.

Add the Repository Configuration

Create a DEB822-format sources file that points to the repository:

CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
ARCH=$(dpkg --print-architecture)

cat <<EOF | sudo tee /etc/apt/sources.list.d/deb-multimedia.sources
Types: deb
URIs: https://www.deb-multimedia.org
Suites: ${CODENAME}
Components: main non-free
Architectures: ${ARCH}
Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp
EOF

The configuration uses your system’s codename (trixie, bookworm, or bullseye) and architecture automatically. If $CODENAME is empty, check /etc/os-release and confirm that VERSION_CODENAME is set. You can verify the created file:

cat /etc/apt/sources.list.d/deb-multimedia.sources

Expected output (your codename and architecture will reflect your system):

Types: deb
URIs: https://www.deb-multimedia.org
Suites: [codename]
Components: main non-free
Architectures: [arch]
Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp

The Suites line will show your actual codename (trixie, bookworm, or bullseye) and Architectures will typically show amd64 on 64-bit systems or arm64 on ARM systems.

Update Package Index

Refresh your package lists:

sudo apt update

You should see output indicating packages are being fetched from deb-multimedia.org:

Get:4 https://www.deb-multimedia.org trixie InRelease [18.6 kB]
Get:5 https://www.deb-multimedia.org trixie/main amd64 Packages [137 kB]
Get:6 https://www.deb-multimedia.org trixie/non-free amd64 Packages [1504 B]

Verify the Repository

Confirm the repository is active by checking a package that deb-multimedia provides. FFmpeg is a good test because deb-multimedia builds it with additional codec support:

apt-cache policy ffmpeg

Example output showing both the official Debian version and the deb-multimedia version:

ffmpeg:
  Installed: (none)
  Candidate: 10:x.x.x-dmo1+debXXu1
  Version table:
     10:x.x.x-dmo1+debXXu1 500
        500 https://www.deb-multimedia.org [codename]/main amd64 Packages
     7:x.x.x-0+debXXu1 500
        500 http://deb.debian.org/debian [codename]/main amd64 Packages

Your output will show actual version numbers and your Debian codename (trixie, bookworm, or bullseye). The key indicator is the epoch number before the colon: deb-multimedia packages use epoch 10, while official Debian packages use epoch 7. Because APT considers higher epochs as “newer,” apt install ffmpeg will automatically select the deb-multimedia version.

Install Packages from Deb-Multimedia

Search for Available Packages

Use apt-cache madison to see which version of a package comes from deb-multimedia:

apt-cache madison vlc

Example output showing packages from multiple sources:

       vlc | 1:x.x.x-dmo0+debXXu1 | https://www.deb-multimedia.org [codename]/main amd64 Packages
       vlc |    x.x.x-0+debXXu1 | http://deb.debian.org/debian-security [codename]-security/main amd64 Packages
       vlc |    x.x.x-0+debXXu1 | http://deb.debian.org/debian [codename]/main amd64 Packages

The deb-multimedia version appears with the -dmo suffix in the version string. The epoch (1: before the version number) gives deb-multimedia priority, even when the base version numbers are identical. Your actual output will show your Debian codename and current version numbers.

Install a Package

Install packages using standard APT commands. Because deb-multimedia packages typically have higher version epochs, APT automatically selects them:

sudo apt install vlc

To explicitly install a specific version (for example, the official Debian version instead of deb-multimedia), use the release codename syntax:

sudo apt install vlc/trixie

Replace trixie with your Debian codename (bookworm for Debian 12, bullseye for Debian 11). This syntax tells APT to install the version from official Debian repositories regardless of epoch.

Popular Deb-Multimedia Packages

Common packages that are often replaced by deb-multimedia builds (check the version string for -dmo):

  • ffmpeg – Video/audio converter with additional codec support. See Install FFmpeg on Debian for detailed configuration options.
  • vlc – Media player with extended format support
  • handbrake – Video transcoder with hardware encoding support
  • kodi – Media center application
  • mpv – Lightweight, scriptable media player
  • FFmpeg libraries (libavcodec, libavformat, libavutil, libswscale, libswresample) – Shared libraries used by many multimedia applications; these are typically upgraded automatically when you install FFmpeg from deb-multimedia

For a complete package list, visit the deb-multimedia distribution index and browse your Debian release.

Troubleshooting

APT says the deb-multimedia key is missing or the Release file is not signed

This usually means the keyring package is not installed or the Signed-By path in your .sources file does not match the installed keyring. Run these commands to diagnose the issue:

dpkg -l | grep -E '^ii\s+deb-multimedia-keyring\s'
ls -l /usr/share/keyrings/ | grep -i deb-multimedia
cat /etc/apt/sources.list.d/deb-multimedia.sources

The first command confirms whether the keyring package is installed. The second shows the actual keyring filename in the keyrings directory. The third displays your repository configuration. If the Signed-By path does not match the actual keyring location, edit the .sources file to correct it.

extrepo does not recognize deb-multimedia

If extrepo enable deb-multimedia fails with “repository not found” or similar, your extrepo offline data may be outdated. Update the extrepo package and its data:

sudo apt update
sudo apt install --only-upgrade extrepo extrepo-offline-data

If the repository is still not available after updating, use the manual method instead. The extrepo database depends on Debian’s curated list of external repositories, which occasionally lags behind repository availability.

Hash sum mismatch or connection errors during apt update

Transient network issues or mirror synchronization delays can cause hash mismatches. Wait a few minutes and retry:

sudo apt update

If errors persist, the deb-multimedia server may be temporarily unavailable. The repository is maintained by a single individual, so occasional downtime can occur. Check back later or verify connectivity to deb-multimedia.org directly.

APT refuses to downgrade packages after removal

If you see E: Packages were downgraded and -y was used without --allow-downgrades., re-run the install using --allow-downgrades or remove -y so you can confirm the prompt interactively.

Remove Deb-Multimedia Repository

If you no longer need the repository, remove it using the method that matches how you added it.

Remove extrepo-Managed Repository

Disable the repository (keeps configuration but marks it inactive):

sudo extrepo disable deb-multimedia

For complete removal, delete the configuration file:

sudo rm -f /etc/apt/sources.list.d/extrepo_deb-multimedia.sources
sudo apt update

Remove Manually-Added Repository

Delete the repository configuration and remove the deb-multimedia keyring package:

sudo rm -f /etc/apt/sources.list.d/deb-multimedia.sources
sudo apt remove deb-multimedia-keyring
sudo apt update

Verify Removal

Confirm the repository is no longer active:

apt-cache policy ffmpeg

Example output showing only official Debian sources after removal:

ffmpeg:
  Installed: (none)
  Candidate: 7:x.x.x-0+debXXu1
  Version table:
     7:x.x.x-0+debXXu1 500
        500 http://deb.debian.org/debian [codename]/main amd64 Packages

The absence of any deb-multimedia.org entries confirms the repository has been removed. The 7: epoch indicates the official Debian package.

Restore Official Debian Packages

Removing the repository does not automatically downgrade installed packages. Deb-multimedia packages use higher version epochs, so APT considers them “newer” even after the repository is removed. To restore official Debian versions, you must explicitly downgrade each affected package.

First, identify packages installed from deb-multimedia by searching for the -dmo version suffix:

dpkg -l | grep -i dmo

Example output showing deb-multimedia packages (version numbers will vary):

ii  ffmpeg         10:x.x.x-dmo1+debXXu1   amd64   Tools for transcoding, streaming and playing
ii  libavcodecXX   10:x.x.x-dmo1+debXXu1   amd64   FFmpeg library with de/encoders

The -dmo suffix and 10: epoch identify packages from deb-multimedia. The library version number (58, 59, 60, or 61 for libavcodec) depends on your Debian version.

To downgrade a package to the official Debian version, use the release codename syntax:

sudo apt install --allow-downgrades ffmpeg/trixie

Replace trixie with your Debian release codename (bookworm for Debian 12, bullseye for Debian 11). This forces APT to install the version from official Debian repositories regardless of epoch. The --allow-downgrades flag is required if you also use -y or if you want a single command that works reliably in scripted environments.

For a complete restoration of all multimedia packages, downgrade ffmpeg and its libraries together. The library package names differ between Debian versions because FFmpeg’s shared library version changes with major releases:

Debian 13 (Trixie):

sudo apt install --allow-downgrades ffmpeg/trixie libavcodec61/trixie libavformat61/trixie libavutil59/trixie libswscale8/trixie

Debian 12 (Bookworm):

sudo apt install --allow-downgrades ffmpeg/bookworm libavcodec59/bookworm libavformat59/bookworm libavutil57/bookworm libswscale6/bookworm

Debian 11 (Bullseye):

sudo apt install --allow-downgrades ffmpeg/bullseye libavcodec58/bullseye libavformat58/bullseye libavutil56/bullseye libswscale5/bullseye

Downgrading packages may require removing software that depends on deb-multimedia-specific features. Review APT’s proposed changes carefully before confirming. If a downgrade causes dependency conflicts, you may need to remove and reinstall the affected applications.

Background and Considerations

Repository History

The repository was originally hosted at debian-multimedia.org until 2012. Following discussions between the Debian Project Leader and the repository maintainer about domain naming and package duplication concerns, the repository moved to deb-multimedia.org. The name change resolved confusion about whether the repository was an official Debian project. Christian Marillat continues to maintain the repository and has provided multimedia packages for Debian since 2000.

Package Differences from Official Debian

Deb-multimedia packages differ from official Debian packages in several ways:

  • Additional codecs – FFmpeg and related tools include proprietary codec support (libfdk-aac, certain x264/x265 configurations) that Debian cannot distribute due to licensing or patent concerns
  • Compile-time options – Some packages enable features that official Debian builds disable for policy or compatibility reasons. For example, FFmpeg from deb-multimedia may include encoders that require non-free libraries
  • Version epochs – Deb-multimedia uses higher epoch numbers (the number before the first colon in version strings, such as 10: vs 7:) to ensure their packages take priority over official Debian versions during apt upgrade

Mixing Repositories

Adding third-party repositories introduces packages that may have different dependencies than official Debian packages. While deb-multimedia is well-maintained and designed to work alongside official Debian, be aware that:

  • Some deb-multimedia packages replace official Debian packages with modified versions
  • Dependency conflicts are rare but possible during major Debian upgrades
  • Bug reports for deb-multimedia packages should go to the deb-multimedia maintainer, not Debian’s bug tracker

Further Reading

Conclusion

The deb-multimedia repository extends Debian’s multimedia capabilities with packages built with additional codec support and features. Using extrepo simplifies the setup process with automatic GPG key management, while the manual method provides explicit control for scripted deployments or environments where extrepo is unavailable. Both methods use the modern DEB822 configuration format and work across Debian 11, 12, and 13. If you decide later that you prefer official Debian packages, the removal and downgrade steps documented above allow you to revert to stock Debian versions.

Leave a Comment

Let us know you are human: