Provides
Format
Fields with a List of Dependencies | ||
Dependencies | Conflicts | Suggestions |
Build-Depends | Build-Conflicts | Enhances |
Build-Depends-Arch | Build-Conflicts-Arch | Provides |
Build-Depends-Indep | Build-Conflicts-Indep | Recommends |
Built-Using | Replaces | |
Depends | Conflicts | Suggests |
Pre-Depends | Breaks | |
Ubuntu-Depends |
The Provides field defines a secondary or virtual name for this package that can be used to satisfy Build-Depends, Depends, Pre-Depends names.
The exact same name can be used in different packages that provide the same functionality. For example, a mail service may be defined as follow:
Provides: mail-server
And that can be referenced as:
Depends: mail-server
The advantage is that the Depends does not lock you up to a specific package. A mail-server package is expected to offer a sendmail tool and thus if that's all you need for your application to work, having such a dependency is quite sensible.
Unfortunately, at the moment there is no repository of standardized Provides names and those names cannot be equivalent to any existing Package name. I do think that the use of this feature is seldom.
Note that a Depends cannot specify a version when pointing to a Provides name.
IMPORTANT NOTE
Obviously if two packages offer the exact same capability they are most certainly in Conflict between each others although it doesn't have to be on modern Linux systems because you can use the Alternate feature to choose which package to use. For example, you can install 4 or 5 different browsers on your system. Yet, only one will be made your favorite and that one will start automatically when you click a link. You can still start the others, only they have to be called up by their specific name.