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

FTP Installation & Package Naming Conventions



(This message isn't nearly as long as it looks :-)


In my work with 'dftp' and in working towards an FTP option to dselect, I've
come across a few problems with how Debian names its packages.

The general idea of "packages-name-version-revision.deb" works really well
until people start making exceptions to this.  I used the suggestion that
JimR sent me about generating a list of installed packages using
"dpkg --list", but found the following anomolies:


debian-0.93/binary/base/dpkg-1.0.5.deb  (have dpkg-1.0.5-0)
>>  Package: dpkg
>>  priority: required
>>  section: base
>>  maintainer: Ian Jackson <iwj10@cus.cam.ac.uk>
>>  version: 1.0.5
>>  revision: 0
>>  description: Package maintenance system for Debian GNU/Linux
>>   This package contains the programs which handles the installation and
>>   removal of packages on your system.
>>   .
>>   The primary interface for the dpkg suite is the `dselect' program;
>>   a more low-level and less user-friendly interface is available in
>>   the form of the `dpkg' command.
>>  essential: yes

[ there is no package revision included in the file name ]


debian-0.93/binary/devel/perl-5.001-5.deb  (have perl-5.001-4)
>>  Package: perl
>>  priority: important
>>  section: devel
>>  maintainer: Carl Streeter <streeter@cae.wisc.edu>
>>  version: 5.001
>>  revision: 4
>>  description: An interpreted scripting language

[ revision is listed as 4 while filename indicates 5 ]


debian-0.93/binary/devel/strace-3.0-1.deb  (have strace-3.0-1-A)
>>  Package: strace
>>  priority: standard
>>  section: devel
>>  maintainer: Robert Sanders <Robert.Sanders@linux.org>
>>  version: 3.0-1
>>  description: A system call tracer

[ revision (not shown here, but known by dpkg) is 'A' and not in filename ]


debian-0.93/binary/devel/tclX-7.3b-6.deb  (have tclX-7.3b-5)
>>  Package: tclX
>>  priority: optional
>>  section: devel
>>  maintainer: David Engel <david@ods.com>
>>  version: 7.3b
>>  revision: 5
>>  depends: tcl, tk
>>  description: Extended Tcl (TclX).
>>   TclX is a set of extensions to Tcl.  Extended Tcl is oriented towards 
>>   Unix system programming tasks and large application development.  Many 
>>   additional interfaces to the Unix operating system are provided.  It 
>>   is upwardly compatible with Tcl.

[ revision is listed as 5 while filename indicates 6 ]


debian-0.93/binary/net/bind-4.9.3-BETA24-1.deb  (have bind-4.9.3-BET-1)
>>  Package: bind
>>  priority: optional
>>  section: net
>>  maintainer: Peter Tobias <tobias@et-inf.fho-emden.de>
>>  version: 4.9.3-BETA24
>>  revision: 1
>>  description: Internet domain name server
>>   The Berkeley Internet Name Domain (BIND) implements an
>>   Internet name server for Unix operating systems. A
>>   name server is a network service that enables clients
>>   to name resources or objects and share this information
>>   with other objects in the network.

[ dpkg thinks version is "4.9.3-BET" while filename indicates "4.9.3-BETA24" ]


These are all version or revision problems and do not include the package-
name discrepencies I have mentioned in the past.

All of these are minor differences, but cause siginificant problems when
trying to get a computer program to correlate packages between an actual
installation and an FTP site.


I propose we standardize the filenames used in the Debian distribution and
suggest what I mentioned above:

	package-name-version-revision.deb

with the following restrictions:

1) The package name must not contain any "-<digit>" substrings.  This is
   important in order to be able to tell where the name ends and the
   version number starts.

2) The version number must start with a digit (see #1, above) but may contain
   letters and dashes thereafter.

3) The revision number must be of the form "-<digits>".

4) All pieces must exactly match the information given in the control file.


For you regular expression guru's, this should amount to

	^(.*)-([0-9].*)-([0-9]*).deb$	\1=name, \2=version, \3=revision

(Note: I don't know how to say in regex, "no -<digit>" for the package name.)

                                        Brian
                                 ( bcwhite@bnr.ca )

-------------------------------------------------------------------------------
    In theory, theory and practice are the same.  In practice, they're not.


Reply to: