Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Jul 2003 15:41:47 +1200
From:      Andrew Turner <zombie@i4free.co.nz>
To:        freebsd-binup@freebsd.org
Subject:   Protocol & package independent draft 2 with code
Message-ID:  <3F0102FB.2010509@i4free.co.nz>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------080405020405030205020406
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Attached is the second draft to my proposed binary update system.

There is some working code at:

http://www.geocities.com/zx_ombie/binup-0.1.tar.gz

with the md5 at

http://www.geocities.com/zx_ombie/binup-0.1.tar.gz.md5.txt

It uses libmd and libfetch for the checksums and fetching the files.

Andrew

--------------080405020405030205020406
Content-Type: text/plain;
 name="binup-draft-2.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="binup-draft-2.txt"

Package and Protocol independent binary update system.


Abstract

This document will look at a proposed system to update remote computers in a network protocol and binary package independent way.

This document will only discuss getting the packages onto the client computer in a way the install script can predict.


Status

This is the second draft.
All input will be considered.


Definitions

Client - The computer being updated
Profile - A named list of packages to install on a computer.
Package - A file containing one or more files that can be read with the correct software
Server - The computer the client connects to to get the updates
Update - A binary package the client installs on the client.

Problem

When computers are distributed updating them can be problematic. Updating many computers takes time if it is not automated.


Solution

The server will have zero or more text files listing profiles in the root package directory. Each profile will be listed in the master profile file.  The layout of the profile file will be described in the final version of this document.  The server also contains a file with its last update date.

Each package will have a description contained within them.

The client will have a list of known servers.

The client follows this process:

1.  The client connects to one at random.
2.  It checks the updates are later then its local version.
3.  If the computer was setup using a profile file it will download the appropriate profile. Otherwise go down to 4b.
4a. Download all the packages from the profiles file.
4b. Download all the packages in the local installed package list.
5.  Run the package install script.

In steps 4a and 4b the packages can be incremental updates to reduce bandwith.

The packages directory structure will be as follows:
Note. all names in <> are variables.

<root> - The top of the package directorys, dosn't have to be the server root.
<root>/profile.list - A list of the profiles on the server (only if the server contains profiles).
<root>/all - All packages on the server are stored here.
<root>/all/<package>.<ext> - The package.
<root>/all/<package>.<ext>.sum - One or more checksums of the package, includes the version.
<root>/all/list - A list of all packages and a short (up to 72 characters) description.
<root>/<profile> - Packages and checksums only used in the profile are linked here (only if the server contains profile).
<root>/<profile>/<package>.<ext> - The package in the profile.
<root>/<profile>/<package>.<ext>.sum - The packages checksums.
<root>/<profile>/list - A list of packages in the profile.

Only the <root>/all/ directory and all files in it listed above are required.

Author:

Andrew Turner - zombie (at) i4free.co.nz

Suggestions by:

Colin Percival - colin.percival (at) wadham.ox.ac.uk

--------------080405020405030205020406--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F0102FB.2010509>