[gnome-continuous-yocto/gnomeostree-3.28-rocko: 1009/8267] dev-manual: Updated Package Feed Creation sections



commit 7ef4a6593e2c58259a8f34fbe6d633c9d12cf1c6
Author: Scott Rifenbark <srifenbark gmail com>
Date:   Tue Jun 7 10:24:21 2016 -0700

    dev-manual: Updated Package Feed Creation sections
    
    Fixes [YOCTO #1882]
    
    Edited the sections in the "Working with Packages" section
    beginning with the "Build Considerations" section with text
    received from Daniela Placencia.
    
    (From yocto-docs rev: 07a55662d6ac98875555f80f766de263b131185f)
    
    Signed-off-by: Scott Rifenbark <srifenbark gmail com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 .../dev-manual/dev-manual-common-tasks.xml         |  278 +++++++++++++-------
 1 files changed, 187 insertions(+), 91 deletions(-)
---
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml 
b/documentation/dev-manual/dev-manual-common-tasks.xml
index a634ef1..24a7bdc 100644
--- a/documentation/dev-manual/dev-manual-common-tasks.xml
+++ b/documentation/dev-manual/dev-manual-common-tasks.xml
@@ -7528,27 +7528,48 @@
                 <title>Build Considerations</title>
 
                 <para>
-                    This section describes build considerations that you need
-                    to be aware of in order to provide support for runtime
+                    This section describes build considerations of which you
+                    need to be aware in order to provide support for runtime
                     package management.
                 </para>
 
                 <para>
-                    When BitBake generates packages it needs to know
+                    When BitBake generates packages, it needs to know
                     what format or formats to use.
                     In your configuration, you use the
                     <ulink 
url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>
-                    variable to specify the format.
-                    <note>
-                        You can choose to have more than one format but you must
-                        provide at least one.
-                    </note>
+                    variable to specify the format:
+                    <orderedlist>
+                        <listitem><para>
+                            Open the <filename>local.conf</filename> file
+                            inside your
+                            <link linkend='build-directory'>Build Directory</link>
+                            (e.g. <filename>~/poky/build/conf/local.conf</filename>).
+                            </para></listitem>
+                        <listitem><para>
+                            Select the desired package format as follows:
+                            <literallayout class='monospaced'>
+     PACKAGE_CLASSES ?= “package_<replaceable>packageformat</replaceable>”
+                            </literallayout>
+                            where <replaceable>packageformat</replaceable>
+                            can be "ipk", "rpm", and "deb", which are the
+                            supported package formats.
+                            <note>
+                                Because the Yocto Project supports three
+                                different package formats, you can set the
+                                variable with more than one argument.
+                                However, the OpenEmbedded build system only
+                                uses the first argument when creating an image
+                                or Software Development Kit (SDK).
+                            </note>
+                            </para></listitem>
+                    </orderedlist>
                 </para>
 
                 <para>
                     If you would like your image to start off with a basic
-                    package database of the packages in your current build
-                    as well as have the relevant tools available on the
+                    package database containing the packages in your current
+                    build as well as to have the relevant tools available on the
                     target for runtime package management, you can include
                     "package-management" in the
                     <ulink 
url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>
@@ -7583,9 +7604,9 @@
                     <literallayout class='monospaced'>
     $ bitbake <replaceable>some-package</replaceable> package-index
                     </literallayout>
-                    This is because BitBake does not properly schedule the
-                    <filename>package-index</filename> target fully after any
-                    other target has completed.
+                    The reason for this restriction is because BitBake does not
+                    properly schedule the <filename>package-index</filename>
+                    target fully after any other target has completed.
                     Thus, be sure to run the package update step separately.
                 </para>
 
@@ -7601,9 +7622,10 @@
 
                 <para>
                     When your build is complete, your packages reside in the
-                    <filename>${TMPDIR}/deploy/<replaceable>package-format</replaceable></filename>
+                    <filename>${TMPDIR}/deploy/<replaceable>packageformat</replaceable></filename>
                     directory.
-                    For example, if <filename>${TMPDIR}</filename>
+                    For example, if
+                    <filename>${</filename><ulink 
url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink><filename>}</filename>
                     is <filename>tmp</filename> and your selected package type
                     is IPK, then your IPK packages are available in
                     <filename>tmp/deploy/ipk</filename>.
@@ -7614,10 +7636,9 @@
                 <title>Host or Server Machine Setup</title>
 
                 <para>
-                    Typically, packages are served from a server using
-                    HTTP.
-                    However, other protocols are possible.
-                    If you want to use HTTP, then setup and configure a
+                    Although other protocols are possible, a server using HTTP
+                    typically serves packages.
+                    If you want to use HTTP, then set up and configure a
                     web server, such as Apache 2 or lighttpd, on the machine
                     serving the packages.
                 </para>
@@ -7640,7 +7661,7 @@
                                 Add the directory to your Apache
                                 configuration, which you can find at
                                 <filename>/etc/httpd/conf/httpd.conf</filename>.
-                                Use commands similar to these on the
+                                Use commands similar to the following on the
                                 development system.
                                 These example commands assume a top-level
                                 <link linkend='source-directory'>Source Directory</link>
@@ -7651,13 +7672,14 @@
                                 as IPK, use "ipk" in the pathnames:
                                 <literallayout class='monospaced'>
      &lt;VirtualHost *:80&gt;
-       ....
+       ...
          Alias /rpm ~/poky/build/tmp/deploy/rpm
          &lt;Directory "~/poky/build/tmp/deploy/rpm"&gt;
            Options +Indexes
          &lt;/Directory&gt;
      &lt;/VirtualHost&gt;
-                                </literallayout></para></listitem>
+                                </literallayout>
+                                </para></listitem>
                             <listitem><para>
                                 Reload the Apache configuration as described
                                 in this step.
@@ -7678,7 +7700,8 @@
                                 For OpenSUSE, use the following:
                                 <literallayout class='monospaced'>
      # /etc/init.d/apache2 reload
-                                </literallayout></para></listitem>
+                                </literallayout>
+                                </para></listitem>
                             <listitem><para>
                                 If you are using Security-Enhanced Linux
                                 (SELinux), you need to label the files as
@@ -7688,26 +7711,24 @@
                                 This example assumes RPM package types:
                                 <literallayout class='monospaced'>
      # chcon -R -h -t httpd_sys_content_t tmp/deploy/rpm
-                                </literallayout></para></listitem>
+                                </literallayout>
+                                </para></listitem>
                         </orderedlist>
                     </para>
                 </section>
 
                 <section id='package-server-lighttpd'>
-                    <title>Serving Packages via lighttpd</title>
+                    <title>Serving Packages Through lighttpd</title>
 
                     <para>
                         If you are using lighttpd, all you need
                         to do is to provide a link from your
-                        <filename>${TMPDIR}/deploy/<replaceable>package-format</replaceable></filename>
+                        <filename>${TMPDIR}/deploy/<replaceable>packageformat</replaceable></filename>
                         directory to lighttpd's document-root.
                         You can determine the specifics of your lighttpd
                         installation by looking through its configuration file,
                         which is usually found at:
                         <filename>/etc/lighttpd/lighttpd.conf</filename>.
-                    </para>
-
-                    <para>
                         For example, if you are using IPK, lighttpd's
                         document-root is set to
                         <filename>/var/www/lighttpd</filename>, and you had
@@ -7729,6 +7750,38 @@
                         </literallayout>
                     </para>
                 </section>
+
+                <section id='package-server-python-simplehttpserver'>
+                    <title>Serving Packages Through Python SimpleHTTPServer</title>
+
+                    <para>
+                        It is possible to serve packages hosted by a build
+                        machine through an HTTP server created with a simple
+                        Python command.
+                    </para>
+
+                    <para>
+                        The first thing you do is to create a directory that
+                        contains the packages to host.
+                        Be sure you have root privileges and place the directory
+                        inside <filename>var/www/</filename>
+                        (e.g. <filename>/var/www/my_repo/</filename>).
+                        To ensure the directory contains the packages you want
+                        to serve, you need to create a symlink from the
+                        package feed area to the directory that hosts the
+                        packages you want to provide:
+                        <literallayout class='monospaced'>
+     my_repo # ln -s ~{TMPDIR}/deploy/<replaceable>packageformat</replaceable> ./
+                        </literallayout>
+                        You can start the server by running the following
+                        command from the recently created directory:
+                        <literallayout class='monospaced'>
+     # python -m SimpleHTTPServer
+
+     Serving HTTP on 0.0.0 port 8000 ...
+                        </literallayout>
+                    </para>
+                </section>
             </section>
 
             <section id='runtime-package-management-target'>
@@ -7744,35 +7797,35 @@
                     <title>Using RPM</title>
 
                     <para>
-                        The application for performing runtime package
-                        management of RPM packages on the target is called
-                        <filename>smart</filename>.
+                        The <filename>smart</filename> application performs
+                        runtime package management of RPM packages.
+                        This application is aware of every package database
+                        you want to use.
+                        You must perform an initial setup for
+                        <filename>smart</filename> on the target machine.
                     </para>
 
                     <para>
-                        On the target machine, you need to inform
-                        <filename>smart</filename> of every package database
-                        you want to use.
-                        As an example, suppose your target device can use the
-                        following three package databases from a server named
-                        <filename>server.name</filename>:
+                        As an example, assume the target is able to use the
+                        following package databases:
                         <filename>all</filename>, <filename>i586</filename>,
-                        and <filename>qemux86</filename>.
-                        Given this example, issue the following commands on the
-                        target:
+                        and <filename>qemux86</filename> from a server named
+                        <filename>my.server</filename>.
+                        You must inform <filename>smart</filename> of the
+                        availability of these databases by issuing the
+                        following commands on the target:
                         <literallayout class='monospaced'>
-     # smart channel --add all type=rpm-md baseurl=http://server.name/rpm/all
-     # smart channel --add i585 type=rpm-md baseurl=http://server.name/rpm/i586
-     # smart channel --add qemux86 type=rpm-md baseurl=http://server.name/rpm/qemux86
+     # smart channel --add i585 type=rpm-md baseurl=http://my.server/rpm/i586
+     # smart channel --add qemux86 type=rpm-md baseurl=http://my.server/rpm/qemux86
+     # smart channel --add all type=rpm-md baseurl=http://my.server/rpm/all
                         </literallayout>
-                        Also from the target machine, fetch the repository
-                        information using this command:
+                        From the target machine, fetch the repository:
                         <literallayout class='monospaced'>
      # smart update
                         </literallayout>
-                        You can now use the <filename>smart query</filename>
-                        and <filename>smart install</filename> commands to
-                        find and install packages from the repositories.
+                        After everything is set up, <filename>smart</filename>
+                        is able to find, install, and upgrade packages from
+                        the specified repository.
                     </para>
                 </section>
 
@@ -7780,61 +7833,104 @@
                     <title>Using IPK</title>
 
                     <para>
-                        The application for performing runtime package
-                        management of IPK packages on the target is called
-                        <filename>opkg</filename>.
+                        The <filename>opkg</filename> application performs
+                        runtime package management of IPK packages.
+                        This application is aware of every package database
+                        you want to use.
+                        You must perform an initial setup for
+                        <filename>opkg</filename> on the target machine.
                     </para>
 
                     <para>
-                        In order to inform <filename>opkg</filename> of the
-                        package databases you want to use, simply create one
-                        or more <filename>*.conf</filename> files in the
-                        <filename>/etc/opkg</filename> directory on the target.
-                        The <filename>opkg</filename> application uses them
-                        to find its available package databases.
-                        As an example, suppose you configured your HTTP server
-                        on your machine named
-                        <filename>www.mysite.com</filename> to serve files
-                        from a <filename>BOARD-dir</filename> directory under
-                        its document-root.
-                        In this case, you might create a configuration
-                        file on the target called
-                        <filename>/etc/opkg/base-feeds.conf</filename> that
-                        contains:
+                        The <filename>opkg</filename> application uses
+                        configuration files to find available package
+                        databases.
+                        Thus, you need to create a configuration file inside
+                        the <filename>/etc/opkg/</filename> direction, which
+                        informs <filename>opkg</filename> of any repository
+                        you want to use.
+                    </para>
+
+                    <para>
+                        For example, assume the following:
+                        <itemizedlist>
+                            <listitem><para>
+                                An HTTP server named
+                                <filename>my.server</filename> exists on your
+                                build machine.
+                                </para></listitem>
+                            <listitem><para>
+                                The server is serving packages from a directory
+                                named <filename>ipk/</filename>.
+                                </para></listitem>
+                            <listitem><para>
+                                The target machine is able to use the
+                                <filename>i586</filename>,
+                                <filename>all</filename>, and
+                                <filename>qemux86</filename> package
+                                databases.
+                                </para></listitem>
+                        </itemizedlist>
+                        On the target, create a configuration file
+                        (e.g. <filename>my_repo.conf</filename>) inside the
+                        <filename>/etc/opkg/</filename> directory containing
+                        the following:
+                        <literallayout class='monospaced'>
+     src/gz all http://my.server/ipk/all
+     src/gz i586 http://my.server/ipk/i586
+     src/gz qemux86 http://my.server/ipk/qemux86
+                        </literallayout>
+                        Next, instruct <filename>opkg</filename> to fetch
+                        the repository information:
                         <literallayout class='monospaced'>
-     src/gz all http://www.mysite.com/BOARD-dir/all
-     src/gz armv7a http://www.mysite.com/BOARD-dir/armv7a
-     src/gz beaglebone http://www.mysite.com/BOARD-dir/beaglebone
+     #opkg update
                         </literallayout>
+                        The <filename>opkg</filename> application is now able
+                        to find, install, and upgrade packages from the
+                        specified repository.
                     </para>
+                </section>
+
+                <section id='runtime-package-management-target-deb'>
+                    <title>Using DEB</title>
 
                     <para>
-                        As a way of making it easier to generate and make
-                        these IPK configuration files available on your
-                        target, simply define
-                        <ulink 
url='&YOCTO_DOCS_REF_URL;#var-FEED_DEPLOYDIR_BASE_URI'><filename>FEED_DEPLOYDIR_BASE_URI</filename></ulink>
-                        to point to your server and the location within the
-                        document-root which contains the databases.
-                        For example: if you are serving your packages over
-                        HTTP, your server's IP address is 192.168.7.1, and
-                        your databases are located in a directory called
-                        <filename>BOARD-dir</filename> underneath your HTTP
-                        server's document-root, you need to set
-                        <filename>FEED_DEPLOYDIR_BASE_URI</filename> to
-                        <filename>http://192.168.7.1/BOARD-dir</filename> and
-                        a set of configuration files will be generated for you
-                        in your target to work with this feed.
+                        The <filename>apt</filename> application performs
+                        runtime package management of DEB packages.
+                        This application uses a source list file to find
+                        available package databases.
+                        The application is aware of every package database
+                        you want to use.
+                        You must perform an initial setup for
+                        <filename>opkg</filename> on the target machine.
                     </para>
 
                     <para>
-                        On the target machine, fetch (or refresh) the
-                        repository information using this command:
+                        To inform <filename>apt</filename> of the repository
+                        you want to use, you might create a list file (e.g.
+                        <filename>my_repo.list</filename>) inside the
+                        <filename>/etc/apt/sources.list.d/</filename>
+                        directory.
+                        As an example, suppose you are serving packages from a
+                        <filename>deb/</filename> directory containing the
+                        <filename>i586</filename>,
+                        <filename>all</filename>, and
+                        <filename>qemux86</filename> databases through an
+                        HTTP server named <filename>my.server</filename>.
+                        The list file should contain:
+                        <literallayout class='monospaced'>
+     deb http://my.server/deb/all ./
+     deb http://my.server/deb/i586 ./
+     deb http://my.server/deb/qemux86 ./
+                        </literallayout>
+                        Next, instruct the <filename>apt</filename>
+                        application to fetch the repository information:
                         <literallayout class='monospaced'>
-     # opkg update
+     #apt-get update
                         </literallayout>
-                        You can now use the <filename>opkg list</filename> and
-                        <filename>opkg install</filename> commands to find and
-                        install packages from the repositories.
+                        After this step, <filename>apt</filename> is able
+                        to find, install, and upgrade packages from the
+                        specified repository.
                     </para>
                 </section>
             </section>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]