On Sun, 2 Mar 2003 15:15:41 -0500 Matt Zimmerman <mdz@debian.org> wrote: > One option that has been brought up is to move the problematic > functionality to a server side program. A lightweight, dumb client > would run on the handheld, and communicate with a smart client on a > remote server. > > For example: > > Client->Server What packages are available? > > Server->Client <handheld-tailored package list> > > Client->Server Here is my state (dpkg status) > > Client->Server I want to install 'hello' > > Server->Client Fetch these URLs: > > 'http://debian/pool/main/h/hello/hello_2.1.1-1_i386.deb' > hello_2.1.1-1_i386.deb 47900 > e193bf7e7555a8bb62b28a91b410e543'http://debian/pool/main/g/glibc/libc > 6_2.3.1-14_i386.deb' libc6_2.3.1-14_i386.deb 3192764 > a555b45a42df272467c3a7afc4536ab9 > > Server->Client Execute this series of actions: > > Inst libc6 [2.3.1-14] (2.3.1-14 Debian:unstable) > Conf libc6 (2.3.1-14 Debian:unstable) > Inst hello (2.1.1-1 Debian:unstable) > Conf hello (2.1.1-1 Debian:unstable) > > Then the lightweight client does not need to make difficult decisions > about installation ordering, conflict resolution, etc., and does not > need to store the entire package database locally. It basically only > needs to be able to talk to the APT download methods and be a frontend > to dpkg. > > This is no small amount of work, but I think that it would suit our > needs nicely, and have broader usefulness as well. > Im persuing similar goals to this, i want a packages metadata to be downloadable individually, a client/server is one method i am persuing. Firstly i think there should be an index for the packages file. This index could be efficiently syncronised using two ordered lists, one list for package additions/changes, another for removals. Client->Server suite/arch Client->Server last package added. Server->Client list of package names and versions newer than given package. Client->Server last package removed Server->Client list of packages removed since the given package Now the Client has an uptodate list of package names and versions that are in a release, it can retreive the packages other metadata at will. Client->Server Request metadata (a packages entry i nthe Packages file) for package (name-version-arch) Server->client Package entry Or Server->Client Offset, Size, Hash of a Packages file entry. Client then does HTTP range transfer on a Packages file. This http range transfer could also be used in conjunction wiht a Package.index file which has each packages name, version offset and size. One issue with partial downloads is that authentication breaks unless you rebuild the entire Packages file, a signed Package.index file would work well. I think these methods are superior to rsync. If anyone wants to work on this give me an email, im currently working on it at the same time as a few other projects. Glenn
Attachment:
pgpvGX1ASQ9aa.pgp
Description: PGP signature