# Optionally Customizing the Development Packages Installation

Because the Yocto Project is suited for embedded Linux development, it is likely that you will need to customize your development packages installation. For example, if you are developing a minimal image, then you might not need certain packages (e.g. graphics support packages). Thus, you would like to be able to remove those packages from your target sysroot.

## Package Management Systems

The OpenEmbedded build system supports the generation of sysroot files using three different Package Management Systems (PMS):

- OPKG: A less well known PMS whose use originated in the OpenEmbedded and OpenWrt embedded Linux projects. This PMS works with files packaged in an `.ipk` format. See for more information about OPKG.

- RPM: A more widely known PMS intended for GNU/Linux distributions. This PMS works with files packaged in an `.rpm` format. The build system currently installs through this PMS by default. See for more information about RPM.

- Debian: The PMS for Debian-based systems is built on many PMS tools. The lower-level PMS tool `dpkg` forms the base of the Debian PMS. For information on dpkg see .

## Configuring the PMS

Whichever PMS you are using, you need to be sure that the `PACKAGE_CLASSES` variable in the `conf/local.conf` file is set to reflect that system. The first value you choose for the variable specifies the package file format for the root filesystem at sysroot. Additional values specify additional formats for convenience or testing. See the `conf/local.conf` configuration file for details.

For build performance information related to the PMS, see the "`package.bbclass`" section in the Yocto Project Reference Manual.

As an example, consider a scenario where you are using OPKG and you want to add the `libglade` package to the target sysroot.

First, you should generate the IPK file for the `libglade` package and add it into a working `opkg` repository. Use these commands:

         $ bitbake libglade
         $ bitbake package-index

Next, source the cross-toolchain environment setup script found in the Source Directory. Follow that by setting up the installation destination to point to your sysroot as sysroot_dir. Finally, have an OPKG configuration file conf_file that corresponds to the `opkg` repository you have just created. The following command forms should now work:

         $ opkg-cl –f conf_file -o sysroot_dir update
         $ opkg-cl –f cconf_file -o sysroot_dir \
            --force-overwrite install libglade
         $ opkg-cl –f cconf_file -o sysroot_dir \
            --force-overwrite install libglade-dbg
         $ opkg-cl –f conf_file> -o sysroot_dir> \
            --force-overwrite install libglade-dev