Changes

no edit summary
Line 22: Line 22:  
== Concept ==
 
== Concept ==
   −
The general idea is exactly about presolving dependencies tree for limited list of top-level packages and store this information on a server. 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 database into memory during solving process).
+
The general idea is to pre-resolve dependencies for a limited set of top-level packages and store this information on a server. Clients need to download only small amount of information (compared with entire list of available packages) to reuse it as-is (and avoid reading database into memory during solving process).
   −
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 {{Code|glibc}} packages, instead, it ends with {{Code|sugar}} package. That should drastically restrict the length of trees.
+
Another important point is that pre-resolved dependency graphs don't include packages from the base system. In other words, a particular dependency tree doesn't end with the {{Code|glibc}} package. Instead, it ends with the {{Code|sugar}} package. This expedient should drastically reduce the size of trees.
   −
Finally, missed packages will be installed directly by using {{Code|rpm -i}} command.
+
Finally, missing packages will be installed directly by using the {{Code|rpm -i}} command.
   −
=== Upside ===
+
=== Upsides ===
   −
* Users need to download metadata on package basis on demand and avoid downloading the full packages database;
+
* Users download metadata on a package by package basis, thus avoiding the need to download 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 {{Code|rpm -i}} command;
 
* 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 {{Code|rpm -i}} command;
* Activities launching code will be general, i.e., will work as-is on all platform that have PackageKit (literally, on all mainstream GNU/Linux distributions), not only on XO laptops with packagekit-backend-presolve installed.
+
* Packaged activities will be distro-agnostic. That is, they will work unmodified on all platforms that provide PackageKit (which means all mainstream GNU/Linux distributions).
   −
=== Downside ===
+
=== Downsides ===
   −
* 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 pre-resolved dependency trees on a server; for example, it is not capable for full system update;
* Support dependency trees on server side.
+
* Need to support server-side generation of dependency trees.
    
== Implementation ==
 
== Implementation ==
Line 43: Line 43:  
=== Premisses ===
 
=== Premisses ===
   −
The implementation is following the premisses:
+
The implementation is following the premises:
    
* Being targeted only to XO laptops (assuming that other platforms are more powerful where standard PackageKit backend can be used);
 
* Being targeted only to XO laptops (assuming that other platforms are more powerful where standard PackageKit backend can be used);
Line 51: Line 51:  
=== Overview ===
 
=== Overview ===
   −
* Client side keeps a list of installed, via backend, packages;
+
* Clients keep a list of packages installed by the back-end;
* After getting install request, backend will check if requested package is already installed;
+
* After getting install request, the back-end will check if the requested package is already installed;
* If not, download a file from know HTTP location with the requested package's name;
+
* If not, it downloads a file from know HTTP location with the requested package's name;
 
* Downloaded file contains RPM url for requested package and a list of package-name/url pairs for all dependencies (starting from some known point);
 
* Downloaded file contains RPM url for requested package 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}};
+
* All missing packages will be downloaded and installed by directly calling {{Code|rpm -i}};
 
* Installed packages list will be updated correspondingly.
 
* Installed packages list will be updated correspondingly.