From owner-freebsd-binup@FreeBSD.ORG Mon Jun 30 20:51:45 2003 Return-Path: Delivered-To: freebsd-binup@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6D2F837B401 for ; Mon, 30 Jun 2003 20:51:45 -0700 (PDT) Received: from protov.plain.co.nz (protov.plain.co.nz [202.36.174.23]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6CDC343FCB for ; Mon, 30 Jun 2003 20:51:44 -0700 (PDT) (envelope-from zombie@i4free.co.nz) Received: from i4free.co.nz (ppp65176.cyberxpress.co.nz [202.49.65.176]) by protov.plain.co.nz (Postfix) with ESMTP id 0AE203D974 for ; Tue, 1 Jul 2003 15:42:43 +1200 (NZST) Message-ID: <3F0102FB.2010509@i4free.co.nz> Date: Tue, 01 Jul 2003 15:41:47 +1200 From: Andrew Turner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-binup@freebsd.org Content-Type: multipart/mixed; boundary="------------080405020405030205020406" Subject: Protocol & package independent draft 2 with code X-BeenThere: freebsd-binup@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Design and development of the binary update system List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jul 2003 03:51:45 -0000 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. - The top of the package directorys, dosn't have to be the server root. /profile.list - A list of the profiles on the server (only if the server contains profiles). /all - All packages on the server are stored here. /all/. - The package. /all/..sum - One or more checksums of the package, includes the version. /all/list - A list of all packages and a short (up to 72 characters) description. / - Packages and checksums only used in the profile are linked here (only if the server contains profile). //. - The package in the profile. //..sum - The packages checksums. //list - A list of packages in the profile. Only the /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--