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

Re: apt on handheld issues



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


Reply to: