## 7.3. Alternatives - `update-alternatives.bbclass`

Several programs can fulfill the same or similar function and be installed with the same name. For example, the `ar` command is available from the `busybox`, `binutils` and `elfutils` packages. The `update-alternatives.bbclass` class handles renaming the binaries so that multiple packages can be installed without conflicts. The `ar` command still works regardless of which packages are installed or subsequently removed. The class renames the conflicting binary in each package and symlinks the highest priority binary during installation or removal of packages.

Four variables control this class:

- `ALTERNATIVE_NAME` ‐ The name of the binary that is replaced (`ar` in this example).

- `ALTERNATIVE_LINK` ‐ The path to the resulting binary (`/bin/ar` in this example).

- `ALTERNATIVE_PATH` ‐ The path to the real binary (`/usr/bin/ar.binutils` in this example).

- `ALTERNATIVE_PRIORITY` ‐ The priority of the binary. The version with the most features should have the highest priority.

Currently, the OpenEmbedded build system supports only one binary per package.