Debian Package Depends vs Recommends vs Suggests
In the Debian package management ecosystem, control files use
relationship fields to declare how a package interacts with other
software. This article explains the technical differences between the
Depends, Recommends, and Suggests
fields, detailing how each level of dependency dictates package
functionality and how package managers like APT handle them during
installation.
Depends
The Depends field specifies absolute dependencies. A
package cannot function, be configured, or be installed properly without
the packages listed in this field.
- Criticality: Mandatory.
- Default APT Behavior: APT will automatically
download and install all packages listed under
Depends. If any dependency cannot be satisfied, the installation will abort or fail. - Use Case: Core shared libraries, essential runtime environments, or system utilities required for the program to execute.
If a package's Depends requirement is missing, package
configuration scripts (such as postinst) will fail, leaving
the package in an unconfigured, broken state.
Recommends
The Recommends field declares a strong, but not
absolute, dependency. According to Debian policy, a package listed in
Recommends should be found in all but unusual
installations. The primary package can execute without recommended
packages, but users may experience missing features or reduced
functionality.
- Criticality: Strong recommendation.
- Default APT Behavior: Modern APT installations
install recommended packages by default
(
APT::Install-Recommends "true"). However, users can bypass them using the--no-install-recommendsflag. - Use Case: Optional graphical front-ends, commonly used plugins, or helper utilities that the vast majority of users expect to have available.
Suggests
The Suggests field declares a weak relationship.
Packages listed here are entirely optional and typically enhance the
primary package's usefulness or offer complementary features.
- Criticality: Optional enhancement.
- Default APT Behavior: APT will not install suggested packages automatically. Instead, APT merely prints a list of suggested packages in the terminal during the installation transaction for the user's awareness.
- Use Case: Documentation, alternative backend engines, advanced plugins, or complementary administration tools.
Summary of Differences
| Feature | Depends | Recommends | Suggests |
|---|---|---|---|
| Strictness | Absolute requirement | Standard requirement | Optional enhancement |
| Default APT Action | Automatically installed | Automatically installed | Not installed (notification only) |
| Can Be Bypassed? | No | Yes (via
--no-install-recommends) |
N/A |
| Impact if Missing | Software fails to run or configure | Software runs with limited features | Software runs normally without add-ons |