Jump to: navigation, search

Virtual Packages

1,400 bytes added, 6 years ago
two first cases for virtuals
Virtuals can not be used if the underlying packages don't provide binary compatibility at least between predictable range of versions.
== Common uses for virtual packages ==
=== System components and services ===
Example: ''virtual/service-manager''
One of the common uses for virtuals is to define abstract ''system services''. Those virtuals are not very specific on how those services are provided. They are mostly intended to be used in the @system package set, to ensure that the user system doesn't lack key components such as a service manager or a package manager.
The providers for this kind of virtuals do not have to meet any specific requirements except for having a particular function. In particular, there's no requirement for common configuration or provided executables. The user is responsible for ensuring that the installed implementation is set up and working.
=== Tools provided by multiple packages ===
Example: ''virtual/eject''
This kind of virtuals is used when multiple packages may provide tools with the same names. The virtual is used in packages that rely on those tools being present, in particular when the tools are used at build-time of the package or are called by package's scripts (executables).
While the tools don't necessarily need to be fully compatible, they need to have a common basic usage. In particular, when a tool from one provider is replaced by a tool from another, the reverse dependencies must remain in working state, with no need for rebuilds or configuration adjustments.

Navigation menu