# 6. Alternative versions of an interface - `update-alternatives` (from old Packaging Manual)

When several packages all provide different versions of the same program or file it is useful to have the system select a default, but to allow the system administrator to change it and have their decisions respected.

For example, there are several versions of the `vi` editor, and there is no reason to prevent all of them from being installed at once, each under their own name (`nvi`, `vim` or whatever). Nevertheless it is desirable to have the name `vi` refer to something, at least by default.

If all the packages involved cooperate, this can be done with `update-alternatives`.

Each package provides its own version under its own name, and calls `update-alternatives` in its postinst to register its version (and again in its prerm to deregister it).

See the update-alternatives(8) man page for details.

If `update-alternatives` does not seem appropriate you may wish to consider using diversions instead.

Do not use alternatives for `systemd` configuration files. See Binary packages for more information.