Satisfying Debian Dependencies with Equivs
The Debian package management system relies on strict dependency
tracking, which can cause conflicts when software is installed outside
of the standard package manager. The equivs utility solves
this problem by allowing administrators to generate custom, empty Debian
packages known as dummy or placeholder packages. These packages fulfill
the dependency requirements of the Advanced Package Tool (APT) without
installing redundant or conflicting software, effectively tricking the
system into believing a necessary dependency is already met.
In a standard Debian environment, dpkg and
APT monitor installed software using a local database. When
a user compiles software from source, installs a standalone binary, or
uses an alternative runtime (such as an upstream version of Java or a
custom Linux kernel), the package manager remains unaware of its
existence. Consequently, attempting to install a package from the
official repositories that relies on this software forces APT to
download and install its own packaged version, resulting in duplicate
binaries, wasted disk space, or system conflicts.
The equivs package provides a lightweight framework to
bridge this gap. Rather than requiring developers to construct complex
Debian source trees, equivs automates the creation of
minimal .deb files containing only control metadata and no
actual payload.
The process typically involves two core tools:
- equivs-control: Generates a template configuration
file that defines package attributes such as
Package,Version,Provides, andArchitecture. - equivs-build: Reads the modified control file and
compiles it into an installable
.debpackage.
To satisfy a dependency, an administrator sets the
Package field in the control template to match the required
dependency name, or configures the Provides field to
satisfy a virtual package. For example, if a mail utility requires a
generic mail-transport-agent, but a lightweight or
custom-compiled mail handler is already in use, equivs can
generate a package that claims to provide
mail-transport-agent.
Once compiled, the resulting .deb package is installed
using dpkg -i. From that point forward, the APT database
recognizes the dependency as satisfied. Subsequent commands like
apt install will evaluate the dummy package as present and
will not attempt to pull in the official distribution package.
While equivs is a powerful tool for preventing package
bloat and resolving dependency deadlocks, it relies entirely on the
administrator ensuring the actual functional requirements of the missing
software are met. If a package depends on specific libraries or binary
behaviors that the non-Debian installation lacks, the dependent software
may fail at runtime despite APT reporting a healthy system state.