mkvdup

MKV deduplication tool using FUSE. Store MKV files as small dedup files that reference original DVD/Blu-ray sources.

macOS / Linux (Homebrew)

brew tap stuckj/mkvdup
brew install mkvdup

Debian/Ubuntu (APT)

# Add the GPG key
curl -fsSL https://stuckj.github.io/mkvdup/gpg-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/mkvdup.gpg

# Add the repository
echo "deb [signed-by=/usr/share/keyrings/mkvdup.gpg arch=amd64,arm64] https://stuckj.github.io/mkvdup/apt stable main" | sudo tee /etc/apt/sources.list.d/mkvdup.list

# Install
sudo apt update
sudo apt install mkvdup

This repository carries the current release only. To install or pin an older version, add the archive repository below — it indexes every version ever published.

Enabling both is safe. They are two sources for the same package, not two packages, so apt merges them and still installs exactly one mkvdup — one binary, one man page, one mount helper. The current release appears in both, with the same checksum, and apt simply lists two sources for it. The canary channel is the different case: it installs under its own name, mkvdup-canary, and is meant to sit alongside a stable install. Both are signed with the same key.

Debian/Ubuntu (APT) — full version history

echo "deb [signed-by=/usr/share/keyrings/mkvdup.gpg arch=amd64,arm64] https://github.com/stuckj/mkvdup/releases/download/apt-history/ ./" | sudo tee /etc/apt/sources.list.d/mkvdup-history.list

sudo apt update
apt list -a mkvdup                 # every published version
sudo apt install mkvdup=1.8.0      # pin one

RHEL/CentOS/Fedora (YUM/DNF)

Indexes every version published; no separate archive repository is needed.

Requires rpm 4.16 or newer — Fedora, RHEL/Alma/Rocky 9 and 10. Packages are signed with an ed25519 key, and rpm only learned to read EdDSA signatures in 4.16.0. EL8 ships rpm 4.14, which cannot import the key (key 1 import failed), so gpgcheck=1 cannot be satisfied there.

# Add the repository
sudo tee /etc/yum.repos.d/mkvdup.repo << 'REPO'
[mkvdup]
name=mkvdup
baseurl=https://stuckj.github.io/mkvdup/yum
enabled=1
gpgcheck=1
gpgkey=https://stuckj.github.io/mkvdup/yum/gpg-key.asc
REPO

# Install
sudo dnf install mkvdup
sudo dnf install mkvdup-1.8.0      # or pin an older version

Arch Linux (pacman or AUR)

The AUR package builds from source. The repository below serves a prebuilt, signed x86_64 package and updates through pacman -Syu; on Arch Linux ARM use the AUR route, which builds natively.

# From the AUR, with a helper
yay -S mkvdup

# Or add the binary repository
curl -fsSL https://stuckj.github.io/mkvdup/gpg-key.asc | sudo pacman-key --add -
sudo pacman-key --lsign-key 3AABF4C834FFE7E08D91A9BACDB7B8F88AFCCBE3

sudo tee -a /etc/pacman.conf << 'REPO'

[mkvdup]
SigLevel = Required
Server = https://github.com/stuckj/mkvdup/releases/download/pacman-$arch
REPO

sudo pacman -Syu mkvdup

Canary Channel (Pre-release)

The canary channel provides early access to new features. It installs as mkvdup-canary and can be installed alongside the stable version.

macOS / Linux (Homebrew) - Canary

brew tap stuckj/mkvdup
brew install mkvdup-canary

Debian/Ubuntu (APT) - Canary

# Add the GPG key (same key as stable)
curl -fsSL https://stuckj.github.io/mkvdup/gpg-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/mkvdup.gpg

# Current canary only
echo "deb [signed-by=/usr/share/keyrings/mkvdup.gpg arch=amd64,arm64] https://stuckj.github.io/mkvdup/apt canary main" | sudo tee /etc/apt/sources.list.d/mkvdup-canary.list

# ...or every canary ever published
echo "deb [signed-by=/usr/share/keyrings/mkvdup.gpg arch=amd64,arm64] https://github.com/stuckj/mkvdup/releases/download/apt-history-canary/ ./" | sudo tee /etc/apt/sources.list.d/mkvdup-canary-history.list

sudo apt update
sudo apt install mkvdup-canary

RHEL/CentOS/Fedora (YUM/DNF) - Canary

Same rpm 4.16 or newer requirement as the stable repository above.

# Add the canary repository
sudo tee /etc/yum.repos.d/mkvdup-canary.repo << 'REPO'
[mkvdup-canary]
name=mkvdup-canary
baseurl=https://stuckj.github.io/mkvdup/yum-canary
enabled=1
gpgcheck=1
gpgkey=https://stuckj.github.io/mkvdup/yum-canary/gpg-key.asc
REPO

# Install
sudo dnf install mkvdup-canary

Arch Linux (pacman or AUR) - Canary

yay -S mkvdup-canary

# Or add the canary repository (same signing key as stable)
curl -fsSL https://stuckj.github.io/mkvdup/gpg-key.asc | sudo pacman-key --add -
sudo pacman-key --lsign-key 3AABF4C834FFE7E08D91A9BACDB7B8F88AFCCBE3

sudo tee -a /etc/pacman.conf << 'REPO'

[mkvdup-canary]
SigLevel = Required
Server = https://github.com/stuckj/mkvdup/releases/download/pacman-canary-$arch
REPO

sudo pacman -Syu mkvdup-canary

Where the packages live

Package files are served from the per-version GitHub releases; these repositories carry only the indexes. The APT archive reaches them with a relative Filename, and the YUM metadata with a per-package xml:base.

Links