Changes

Line 38: Line 38:  
* The project is intended to install only limited number of top-level packages, i.e., packages that have presolved dependency trees on a server; for example, it is not capable for full system update;
 
* The project is intended to install only limited number of top-level packages, i.e., packages that have presolved dependency trees on a server; for example, it is not capable for full system update;
 
* Support dependency trees on server side.
 
* Support dependency trees on server side.
 +
 +
== Implementation ==
 +
 +
=== Premisses ===
 +
 +
The implementation is following the premisses:
 +
 +
* Being targeted only to XO laptops (assuming that other platforms are more powerful where standard PackageKit backend can be used);
 +
* Keep less work on XO side and more work on server side to make installation process on client side as fast and reliable as possible;
 +
* Implement only first-needed functionality and provide more complex features as required, e.g., current implementation doesn't support updating already installed packages leave it to hard (and rare, e.g., yearly based) full system updates (re-flashes or calling olpc-update) and incremental regular updates (sugar-client).
 +
 +
=== Overview ===
 +
 +
* The client side keep the list of installed, via backend, packages;
 +
* After getting install request, it will check if requested package is already installed;
 +
* If not, download a file from know HTTP location with the requested package's name;
 +
* Downloaded file contains RPM url for requested packages and a list of package-name/url pairs for all dependencies (starting from some known point);
 +
* All missed RPMs will be downloaded and installed by directly calling {{Code|rpm -i}};
 +
* Install packages list will be updated correspondingly.
    
== Sources ==
 
== Sources ==