3,379 bytes added
, 04:53, 13 September 2012
== Summary ==
This is a [http://www.packagekit.org/ PackageKit] backend which is intended to be used on restricted systems like XO-1 laptops where regular package management routines are too heavy for limited amount of memory or CPU resources.
== The reason ==
The known, for the author of these lines, current practice is:
* [http://wiki.laptop.org/go/Olpc-update olpc-update]<br>[[wikipedia:Rsync|Rsync]] the full system.
* [[Platform_Team/Server_Kit/sugar-client|sugar-client]]'s [[Platform_Team/Server_Kit/sugar-client#Unattended_system_update|unattended update]] in [[Dextrose]]<br>Regular update but only for particular, much smaller than main ones, repository(ies).
Both ways are useful for usecases they were created for. But there is a situation when they both become less useful. Having [[Activity Library]] (or its distributed version on regional or school server), XO users might download activities directly from the Internet (or distributed server). So, it is becoming hard to use:
* olpc-update,<br>[[Activity Library]] might have non-standard dependencies and it is either hard to keep olpc-update server up-to-date, or, useless to install all possible dependencies on every XO.
* sugar-client,<br>activity dependencies are, in most cases, from official repositories when sugar-client's 3rd party repository are useless.
In other words, there is a need to install particular packages from official Fedora repository and using existing methods is either impractical (olpc-update) or impossible (sugar-client). Fallback to using regular (like yum) ways is also not useful because they take too much memory (at the first) and CPU resources, it is a special problem on XO-1 laptops.
The packagekit-backend-presolve project is intended to solve this issue by providing standard way (it is PackageKit backend, i.e., sugar launching code will be common for all platforms, it will call PackageKit all time) to install activity dependencies while consuming as less as possible resources on XO laptops.
== Concept ==
The general idea is exactly about presolving dependencies tree for limited list of top-level packages and store this information on the server. When clients need to download only small amount of information (in comparing with entire list of available packages) to reuse it as-is (and avoid reading full database into memory).
Another important point is that all presolved dependency trees don't include packages from some standard installation. In other words, particular dependency tree doesn't end with the ''glibc'' packages, instead, it ends with ''sugar'' package. That should drastically restrict the length on trees.
=== Upside ===
* Users need to download metadata on package basis and avoid downloading the full packages database;
* After downloading, metadata will be reused as-is, i.e., after checking what packages were already installed, system will download only missed RPMs and install them directly by calling ''rpm'' command.
=== Downside ===
* The system is intended to install only limited number of top-level packages, i.e., packages that have presolved dependency trees on a server.
== Sources ==
Clone source repository from [http://git.sugarlabs.org/desktop Gitorious] project:
git clone git://git.sugarlabs.org/desktop/packagekit-backend-presolve.git
== Getting involved ==
{{:Harmonic Distribution/Feedback}}