|  | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | 
|  | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | 
|  | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | 
|  |  | 
|  | <chapter id='adt-package'> | 
|  | <title>Optionally Customizing the Development Packages Installation</title> | 
|  |  | 
|  | <para> | 
|  | 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. | 
|  | </para> | 
|  |  | 
|  | <section id='package-management-systems'> | 
|  | <title>Package Management Systems</title> | 
|  |  | 
|  | <para> | 
|  | The OpenEmbedded build system supports the generation of sysroot files using | 
|  | three different Package Management Systems (PMS): | 
|  | <itemizedlist> | 
|  | <listitem><para><emphasis>OPKG:</emphasis> A less well known PMS whose use | 
|  | originated in the OpenEmbedded and OpenWrt embedded Linux projects. | 
|  | This PMS works with files packaged in an <filename>.ipk</filename> format. | 
|  | See <ulink url='http://en.wikipedia.org/wiki/Opkg'></ulink> for more | 
|  | information about OPKG.</para></listitem> | 
|  | <listitem><para><emphasis>RPM:</emphasis> A more widely known PMS intended for GNU/Linux | 
|  | distributions. | 
|  | This PMS works with files packaged in an <filename>.rpm</filename> format. | 
|  | The build system currently installs through this PMS by default. | 
|  | See <ulink url='http://en.wikipedia.org/wiki/RPM_Package_Manager'></ulink> | 
|  | for more information about RPM.</para></listitem> | 
|  | <listitem><para><emphasis>Debian:</emphasis> The PMS for Debian-based systems | 
|  | is built on many PMS tools. | 
|  | The lower-level PMS tool <filename>dpkg</filename> forms the base of the Debian PMS. | 
|  | For information on dpkg see | 
|  | <ulink url='http://en.wikipedia.org/wiki/Dpkg'></ulink>.</para></listitem> | 
|  | </itemizedlist> | 
|  | </para> | 
|  | </section> | 
|  |  | 
|  | <section id='configuring-the-pms'> | 
|  | <title>Configuring the PMS</title> | 
|  |  | 
|  | <para> | 
|  | Whichever PMS you are using, you need to be sure that the | 
|  | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink> | 
|  | variable in the <filename>conf/local.conf</filename> | 
|  | 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 <filename>conf/local.conf</filename> configuration file for | 
|  | details. | 
|  | </para> | 
|  |  | 
|  | <note> | 
|  | For build performance information related to the PMS, see the | 
|  | "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package.bbclass</filename></ulink>" | 
|  | section in the Yocto Project Reference Manual. | 
|  | </note> | 
|  |  | 
|  | <para> | 
|  | As an example, consider a scenario where you are using OPKG and you want to add | 
|  | the <filename>libglade</filename> package to the target sysroot. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | First, you should generate the IPK file for the | 
|  | <filename>libglade</filename> package and add it | 
|  | into a working <filename>opkg</filename> repository. | 
|  | Use these commands: | 
|  | <literallayout class='monospaced'> | 
|  | $ bitbake libglade | 
|  | $ bitbake package-index | 
|  | </literallayout> | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | Next, source the cross-toolchain environment setup script found in the | 
|  | <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>. | 
|  | Follow that by setting up the installation destination to point to your | 
|  | sysroot as <replaceable>sysroot_dir</replaceable>. | 
|  | Finally, have an OPKG configuration file <replaceable>conf_file</replaceable> | 
|  | that corresponds to the <filename>opkg</filename> repository you have just created. | 
|  | The following command forms should now work: | 
|  | <literallayout class='monospaced'> | 
|  | $ opkg-cl –f <replaceable>conf_file</replaceable> -o <replaceable>sysroot_dir</replaceable> update | 
|  | $ opkg-cl –f <replaceable>cconf_file</replaceable> -o <replaceable>sysroot_dir</replaceable> \ | 
|  | --force-overwrite install libglade | 
|  | $ opkg-cl –f <replaceable>cconf_file</replaceable> -o <replaceable>sysroot_dir</replaceable> \ | 
|  | --force-overwrite install libglade-dbg | 
|  | $ opkg-cl –f <replaceable>conf_file> -o </replaceable>sysroot_dir> \ | 
|  | --force-overwrite install libglade-dev | 
|  | </literallayout> | 
|  | </para> | 
|  | </section> | 
|  | </chapter> | 
|  | <!-- | 
|  | vim: expandtab tw=80 ts=4 | 
|  | --> |