macOS
brew install bsdifflocal Homebrew formula metadata
sudo port install bsdiffMacPorts ports tree · devel/bsdiff/Portfile · source: api.github.com
brew
Generate and apply patches to binary files. Version 4.3 via Homebrew; verified from local package data.
install
brew install bsdifflocal Homebrew formula metadata
sudo port install bsdiffMacPorts ports tree · devel/bsdiff/Portfile · source: api.github.com
sudo apt install bsdiffDebian stable package indexes · bsdiff · source: deb.debian.org
sudo dnf install bsdiffFedora Rawhide package metadata · bsdiff · source: dl.fedoraproject.org
nix profile install nixpkgs#bsdiffnixpkgs package indexes · pkgs/by-name/bs/bsdiff/package.nix · source: api.github.com
sudo zypper install bsdiffopenSUSE Tumbleweed package metadata · bsdiff · source: download.opensuse.org
overview
Generate and apply patches to binary files
history
bsdiff and bspatch are Colin Percival's binary diff and patch tools, best known for producing small patches for executable files. The package is tiny, old, and still important because binary delta updates remain a core packaging and updater trick.
The official page describes bsdiff and bspatch as tools for building and applying binary patches. It explains that they use suffix sorting, specifically Larsson and Sadakane's qsufsort, and exploit the way executable files change to make much smaller patches than contemporary binary patch tools.
The same page says the programs were originally named `bdiff` and `bpatch`, but were renamed because many other programs used those names. It published version 4.3 as a tarball and identifies the BSDiff 4 algorithm with Percival's 2003 paper, `Naive differences of executable code`.
By the time version 4.2 was described on the official page, bsdiff was already in the FreeBSD, NetBSD, and OpenBSD ports trees, DarwinPorts, Gentoo, and as a Python extension module. The provided package facts show wider modern packaging across Homebrew, Debian, Fedora/dnf, MacPorts, Nix, Ubuntu, and openSUSE/zypper.
bsdiff also influenced the packaging and update world indirectly: binary delta algorithms of this style are natural fits for software update systems, where shaving patch size saves bandwidth and time.
`bsdiff` compares an old file and a new file to produce a compact patch; `bspatch` applies that patch to reconstruct the new file. The package is most useful for compiled binaries and other files where line-oriented text diffs are ineffective.
The official page documents its resource profile: bsdiff is memory-hungry and runs in O((n+m) log n), while bspatch runs in O(n+m). That tradeoff is acceptable for many release pipelines because patch creation happens once, while patch application may happen many times.
bsdiff is package-nerd famous because it is a small command with an outsized effect on binary distribution. It gives maintainers a simple way to ship deltas instead of whole files, and its paper made the algorithm understandable enough to reimplement and adapt.
It is also a classic example of a package whose upstream is not a modern forge repository. Package managers preserve the tool through tarballs, patches, and downstream maintenance even without a canonical GitHub-style source-control home.
security posture
narrow executable package without higher-risk signals.
green risk · low confidence · appliance
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
bsdiff | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
https://www.daemonology.net/bsdiff/
install metadata
| Package key | brew:bsdiff |
|---|---|
| Version | 4.3 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/bsdiff |
| Homepage | https://www.daemonology.net/bsdiff/ |
| Upstream docs | https://www.daemonology.net/bsdiff |
| License | BSD-2-Clause |
| Source archive | https://deb.debian.org/debian/pool/main/b/bsdiff/bsdiff_4.3.orig.tar.gz |
| Build dependencies | bmake |
| Uses from macOS | bzip2 |
| Bottle | available (on arm64_big_sur, arm64_linux, arm64_monterey, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, big_sur, catalina, monterey, sonoma, ventura, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | bsdiff |
| Version Scheme | 0 |
| Revision | 0 |
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
bsdiff 4.3-23
generate/apply a patch between two binary files
https://www.daemonology.net/bsdiff
sudo apt install bsdiffbsdiff
nix profile install nixpkgs#bsdiffbsdiff 4.3-23
generate/apply a patch between two binary files
https://www.daemonology.net/bsdiff
sudo apt install bsdiffbsdiff 4.3-39.fc44
Binary diff/patch utility
http://www.daemonology.net/bsdiff/
sudo dnf install bsdiffbsdiff 4.3-6.9
Tools for binary file patches
https://daemonology.net/bsdiff
sudo zypper install bsdiffbsdiff
sudo port install bsdiffsource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.