Dpkg is the package manager from Debian GNU/Linux. It installs and deinstalls software packages. In Debian, packages are tightly integrated with the rest of the system, and can provide several scripts which dpkg will run at different parts of the installation. There are frontends that call dpkg, like dselect and apt.
Some of its features are:
- You (or a package) can move away a file and tell the package manager. Dpkg, knowing the file has been diverted will then install new versions to the new name.
- There a certain well-known names that many packages try to provide (like vi or lpr). Alternatives make that file to be a symbolic link to a file in /etc/alternatives. The package manager will maintain a registry of which packages provide that and will allow the system administrator to manage that, either by simple changing the links in /etc/alternatives or by using update-alternatives --config.
- Virtual packages:
- A package can depend on a virtual package. This is the same as depending on a disjunction of every package which declares it provides that package. Example: If a package depends on mail-transport-agent, it's as if it depended on exim, sendmail, etc.