Universitšt Bremen, Fachbereich 3
Arbeitsgruppe Rechnernetze

FB3 Software Inventory

1. Design Considerations

The design of the software inventory is centered around a number of observations:

2. File Format

The software inventory is made up of a number of files with the suffix ``.inv'' in a directory /home/software/inventar. Each file holds the inventory entries for a number of software packages that are functionally related. For example, there are ``.inv'' files for categories such as graphics software, WWW software, operating systems, and so on.

Each inventory entry consists of a series of lines of the general form

    attribute: value
Blank lines, leading whitespace, and comments (everything between ``#'' and end-of-line) are ignored. Lines ending in ``\'' (backslash) are continued in the next physical line; the backslash, newline, and leading whitespace are compressed to a single space character.

Each inventory entry for a software package is introduced by a unique package attribute. To increase readability, all the attributes belonging to a package are indented relative to the package line:

    package: netscape
	title: Netscape Navigator
	descr: Browser for the World Wide Web
	keys: www browser
	home: http://www.netscape.com
	version: 3.01 Gold
	contact: net
	source: no
	status: educational
	where: /usr/local/bin/netscape
	platforms: sparc-solaris, mips-irix


The ``platforms'' listed under the platforms attribute (such as ``sparc-solaris'' in the example above) must be defined by a separate inventory entry introduced by a unique platform attribute. Platform entries have two attributes indicating the type of computer architecture and the operating system name and version:

    platform: sparc-solaris
	arch: Sun/SPARC
	os: Solaris 2.5.1

    platform: mips-irix
	arch: SGI/MIPS
        os: Irix 6.2
All platform entries are combined in a file platforms.inv.


There frequently exist several installed ``variants'' of the same software package, such as different releases on the different computer platforms, experimental or beta versions, obsolete versions that are still kept around for some time, and so on. For each inventory entry describing a software package, a number of ``variants'' of this package can be defined using a unique except line:

    except: netscape/sparc-sunos
	version: 2.01
	contact: fld, mk
	where: /usr/local/X11/bin/netscape

    except: netscape/SGI
	remark: SGI's version of Netscape
	version: 2.01S
	contact: mk
	where: /usr/X11/bin/netscape
	partof: irix
The name of a variant consists of the name of the software package followed by a ``/'' (slash) and an additional identifying string (e.g. the name of a platform). For each variant, only those attributes are specified that differ from the attributes of the corresponding main package entry.


The following attributes can be used in an inventory entry:

Name Meaning Value
package: Starts inventory entry for a software package Name of the package (single word)
platform: Starts inventory entry for platform Name of the platform
except: Starts entry for a variant of a software package ``package-name/string''
title: Full name of the software package  
descr: Brief description of the package  
remark: Remark(s) on this inventory entry  
keys: Keywords describing the category to which the software package belongs Comma-list of strings from ../etc/keys.allowed
home: Where is this software package available from? Typically a URL
version: The number of the installed version  
contact: The local contact persons for the installation Comma-list of usernames or e-mail addresses
documentation: Locally provided documentation Typically a URL
restricted: Is use of the software restricted? (e.g. installation requires special permissions) yes/true/1 or no/false/0
source: Is the source code available at the local site? See restricted
legal: Copyright status (legal status) of the software package A string from ../etc/legal.allowed
status: Status of the installed package A string from ../etc/status.allowed
origin: The origin of the software (manufacturer and/or author(s))  
where: Where is the software installed in the local network? (The relevant files and directories) Comma-list of pathnames
platforms: On which platforms is the software installed? Comma-list of platform names
partof: Packages of which this software package is a component. Comma-list of packages
extends: Packages of which this software package is an extension. See partof
arch: Type of computer architecture (only for platform entries)
os: Operating system name and version (only for platform entries)

3. Searching and Browsing the Inventory


By calling ``make'' in /home/software/inventar, the existing ``.inv'' files are combined and translated into a database file by means of the Perl program /home/software/bin/inv2cap. The database file format is identical to that of the host database already in use in our department and can therefore be read and searched using the hostcap command.

This solution works, because neither the hostcap command (despite its name) nor the database file format (the 4.4BSD ``capability database'') are specific to the host database; both can be used for other, similar purpose.

WWW Search Interface

Use of the WWW-based search interfaces is a convenient alternative to the hostcap command for browsing and searching the software inventory. This interface uses the CGI program /home/software/bin/search (another Perl program) to offer these functions:

The output generated by any of these functions is based on HTML tables, so users need a table-capable browser to utilize the WWW interface. The ``power search'' form allows to search based on a search string, a specific platform, copyright status, keywords, and other criteria (the individual search criteria are connected using logical AND; the keywords are joined by logical OR). In addition, the form allows to tailor the output format (e.g. full versus compact format).

Both search functions take care of the relation between software package entries and variants. For each package turned up by a search, all the variants (as defined via except) are added to the search result; likewise, for each variant matched by the search the corresponding package entry is included in the output.

Oliver Laumann   ·  net@informatik.uni-bremen.de