Universitšt Bremen, Fachbereich 3
The design of the software inventory is centered around a number of observations:
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: valueBlank 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.2All 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: irixThe 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:
|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)|
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.
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.