Daemon News Ezine BSD News BSD Mall BSD Support Forum BSD Advocacy BSD Updates

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

Protocol & package independent draft

I have been writing a design for binup to become protocol an package independent. This document dosn't specify how to build the packages or how to install the packages.

This is the first draft and I would like feedback.

With this draft the client is responsible to select the packages on the server to fetch then install them on it's own.


There are 10 types of people in this world. Those who understand binary and those who dont. AlanH
Package and Protocol independent binary update system.


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.


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


Client - The computer being updated
Configuration - 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.


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


The server will have zero or more text files listing configurations in the root package directory. Each configuration will be listed in the master configurations file.  The layout of the configurations 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 configuration file it will download the appropriate configuration. Otherwise go down to 4b.
4a. Download all the packages from the configuration file.
4b. Download all the packages in the local installed package list.
5.  Run the package install script.

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>/config.list - A list of the configurations on the server (only if the server contains configurations).
<root>/all - All packages on the server are stored here.
<root>/all/<package>.<ext> - The package.
<root>/all/<package>.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>/<configuration> - Packages and checksums only used in the configuration are linked here (only if the server contains configurations).
<root>/<configuration>/<package>.<ext> - The package in the configuration.
<root>/<configuration>/<package>.sum - The packages checksums.
<root>/<configuration>/list - A list of packages in the configuration.

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


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