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-recommends flag.
  • 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