autoupdate(8) - Linux man page

Name

autoupd, autoins, autodld, autoget, automrg, autoprg - RPM auto update utilities

Synopsis

autodld [--test] [--url url | --dldconfig file1[,file2...]] [--(no)update] [--(no)merge] [--(no)purge]

autoget [--test] name1 [ name2 ...]]

auto(upd|ins) [--test] [--updatedir directory ] [--rpmdir directory ] [ rpm1 [ rpm2 ...]

automrg [--test] [--updatedir directory ] [--rpmdir directory ] [ rpm1 [ rpm2 ...]]

autoprg [--test] [--updatedir directory ] [ rpm1 [ rpm2 ...]]

Description

AutoUpdate is a perl(1) script that can download new rpms from given remote sites and then pass them to rpm(8) to upgrade your system. There are five independent modes, download, get, update/install, merge, and purge. The mode will be determined by the invocation name and or command line options.

Download mode: The download mode will connect to a given remote site (currently file, ftp, http, https, and sftp are supported) and compare all rpms found to either your rpm directory or, if no rpm directory is set, to the installed rpms. Then all updated versions of rpms you already have will be downloaded. The remote site can be given on the command line or in a configuration file (see below).

Get mode: The get mode is similar to the download mode, except that rpm names (without version) can be given on the command line and those rpms will then be searched for in the local directories or on the remote sites. In addition, you can also use @Section Name to refer to all rpms from an entire section in a comps file. The special sections @+ and @++ will refer to every section selected by default and all sections in the comps file, respectively.

Update/install mode: The update/install mode will compare rpms given on the command line or in the update directory to the installed ones. In update mode only new rpms for which an older version is installed will be upgraded. The install mode is similar but will also install rpms for which no older version was previously installed.

First all rpms (except kernel packages) will be upgraded. If there are unresolved dependencies, it will check if any other rpms in the update or rpm directory can be used to satisfy them and add all necessary ones.

Then it will install new kernel rpms (unless disabled) and, at your request, add the images to your boot manager. Currently lilo(8) and grub(8) are supported. For this to work, the boot image (and the corresponding initrd - if any) needs to contain the full rpm version string. The BootTag will be added to the label of the new/current boot image (unless it contains the full version string). Moreover, all images whose label end in BootTag will be removed from your boot manager. By definition, a kernel package is one which matches the pattern ^kernel-\d or ^kernel-ext-\d, where ext is one of the extensions listed in KernelExt. Warning: The boot manager option could break your system and should be used with caution!

Merge mode: This mode is used to merge new rpms from the update directory into the rpm directory (removing the old ones).

Purge mode: This mode is used to purge old rpms from the update directory.

The default behavior can be changed by the configuration file /etc/autoupdate.d/autoupdate.conf and command line options described below. Moreover, more than one major mode can be used.

Include/Exclude patterns: If include/exclude patterns are given, an rpm will be checked against all include and exclude patterns in the order of the patterns. The default is to include an rpm unless include patterns are given. So to include only package foo, you use an include pattern ^foo-. To exclude package foo, you use an exclude pattern ^foo-. Include/exclude patterns are not used if rpms are given on the command line.

Requirements

The present program requires perl(1) plus the perl-libnet package and rpm(8). In addition, the following perl modules are needed for some options: RPM(3) (Perl-RPM) or RPM2(3pm) (perl-RPM2) or RPM::Perlonly(3) (perl-RPM-Perlonly), lwp(3) (perl-libww), and ssleay(3) (perl-Crypt-SSLeay or perl-Net-SSLeay).

Options

--(no)dld

Do (don't do) the download part. In get mode this can be used to force the download part even if all requested rpms have been found locally.
--(no)get
Do (don't do) the get part.
--url [protocol://][user[:pass]@]host[:port]/path
Ftp site to check. (Implies --dld). If path has a trailing / all sub directories corresponding to architectures suitable for the system will be checked. Currently file, ftp, http(s) (requires lwp(3)), and sftp (requires Net::SFTP(3)) are supported. The default is ftp.
--dldconfig file1[,file2],..]]
Ftp configuration files in /etc/autoupdate.d/ to include. (Implies --dld).
--(no)dldnew
Get all new files from remote site. Not only those in the distribution.
--dldunknown
Get unknown files which are not in the provides database.
--(no)getall
Also look for upgrades during get mode.
--(no)getsamebase
Get all packages with the same base name as well.
--(no)dldrecursive
Do (don't) recursively descent through directories at the remote site.
--dlddirinclude regexp
Include only directories matching the regular expression during recursive descent.
--dldrpminclude regexp
Include only rpms whose filename including full path match the regular expresion.
--dlddbinclude regexp
Include only data bases whose filename including full path match the regular expresion.
--(no)dldaddinstalled
Always add installed rpms for comparison during download. (Even if a distribution directory is given.)
--(no)dldmatch
Apply Include/Exclude match to rpms selected for download. Otherwise only to rpms selected for update.
--(no)bestmatch
Only download the rpm which matches your machine best.
--(no)removebad
Do (don't) remove bad rpms (e.g., bad checksum) from the updates directory.
--(no)timestamps
Do (don't) use timestamps when checking for updates.
--(no)passive
Use (don't use) passive ftp.
--lwpproxy url
URL which will be passed as a proxy to LWP.
--lwpprotocols pro1[,pro2,..]
Use the LWP modules for these protocols.
--(no)addtodb
Add the content of updatedir or the rpms given on the command line to the provides database.
--adddbentry name:capability
Add an entry to the provides database.
--deldbentry capability
Delete an entry from the provides database.
--mergedb file
Merge the given database file with the provides database.
--createdb file
Create given database file.
--(no)autoinfo
Do (don't) generate autoinfo information.
--(no)autoinfofile file
Create given autoinfo file.
--autoinfobasedir dir
Add this dir as basedir to the autoinfo file.
--(no)autoinfoprovides
Do (don't) include provides information in autoinfo list.
--(no)dlduseautoprovides
Do (don't) use provides databases found on remote servers.
--(no)dlduseautoinfo
Do (don't) use autoinfo files found on remote servers.
--(no)dldusesynthesis
Do (don't) use urpmi synthesis databases found on remote servers.
--(no)dlduseheaderinfo
Do (don't) use header.info found on remote servers.
--(no)update
Do (don't do) the update part.
--(no)install
Do (don't do) install part.
--(no)kernel
Do (don't do) install new kernel rpms.
--(no)initrd
Do (don't do) create an initial ram disk for new kernels. If this is off, so is boot from below.
--(no)boot
Do (don't do) add new kernels to the boot manager.
--(no)checksize
Do (don't) check the size of all given rpms.
--(no)checksig
Do (don't) check rpm signature before upgrading.
--(no)checkgpg
Do (don't) check rpm gpg signature before upgrading. Will fail if no gpg signature is present.
--(no)checkmodified
Do (don't) check that the local rpm is unmodified before upgrading.
--(no)checkvendor
Do (don't) check that old vendor strings matches the new one during upgrade.
--gpghome directory
Set the GNUPGHOME enviroment variable to this directory.
--(no)repackage
Do (don't) call rpm with the repackage option.
--rpmoption opt
Use the additional rpm option '--opt' during upgrade.
--(no)resolve
Do (don't) install new rpms to satisfy dependencies.
--(no)resolveuserpmdb
Try to resolve dependencies using the rpm data base.
--(no)resolveavoidnew
Try to avoid adding new rpms to resolve dependencies.
--(no)resolveuninstall
Try to uninstall packages which have unresolvable dependencies.
--(no)resolveallatonce
Try to upgrade all packages at once.
--(no)resolvekernelnodeps
Install kernel rpms with nodeps option.
--distmode
Same as: kernel,resolve{allatonce,uninstall,kernelnodeps}
--(no)checkoldrequirements
Check old packages for missing requirements.
--(no)recursive
Do (don't) recursively descent through all subdirectories of local directories.
--updatedir directory
Directory where the updates are stored. If the directory ends in two slashes, all sub directories corresponding to architectures suitable for the system will be checked. Moreover, all downloaded rpms will be stored according to architectures as well in this case.
--installdir directory
Directory where the new rpms are stored. Same as above but for use with the install option. Default is to use the updates directory.
--rpmdir directory
Directory where the distribution rpms are stored.
--postupdatescript script
Script to execute after upgrading rpms. An empty string will disable this feature.
--postdldscript script
Script to execute after downloading rpms. An empty string will disable this feature.
--distversion string
Distribution version. The string "#DistVersion#" will be replaced by this string in the update, install and rpm directories and in the default provides data base name.
--distname string
Distribution name. Similar to distribution version.
--distlang string
Distribution language. The string "#DistLang#" will be replaced by this string in the update, install and rpm directories. Defaults to en.
--define name=string
User defined variable. The string "#name#" will be replaced by this string in the update, install and rpm directories.
--distarch string
Distribution architecture. The string "#DistArch#" will be replaced by this string in the update, install and rpm directories.
--database file
Location of the provides database to use.
--(no)usedb
Use the provides database
--(no)databasero
Do not write to the provides database.
--(no)lock
Do (don't) create a lock file (/var/lock/autoupdate.pid).
--(no)log
Do (don't) log all updated, installed rpms to the log file.
--logfile file
Location of the log file to use.
--(no)cleanup
Do (don't) remove old rpms after upgrading.
--(no)cleanupkernel
Do (don't) remove kernel rpms which have been removed from the boot manager.
--(no)bootaddasnew
Add the tag "-new" ("-old") to the label of the new (current) image upon kernel upgrade (unless the image contains the full version string).
--exclude regexp
Exclude rpms matching (perl) regular expression. Can be used one or more times. The default is to exclude kernel packages.
--include regexp
Include rpms matching (perl) regular expression. Can be used one or more times.
--(no)merge
Merge all new rpms into the distribution directory.
--(no)mergematch
Apply Include/Exclude match to rpms selected for merging. Otherwise only to rpms selected for update.
--(no)mergeall
Merge (i.e, copy) rpms for which no local version exists as well.
--(no)purge
Remove old versions from the updates directory.
--arch

Default architecture to use (otherwise 'uname -m' except for athlon and alphaev6).

--comps file
Comps file to parse.
--compsdefault 0|1|2
Type of packages from an (xml) comps group to include.
--languages lang1[,lang2[,...]]
Languages to accept when parsing a comps file.
--config file
Configuration file to read instead of the default one.
--compare version1,version2
Compare two version strings. Output 0 if they are equal, 1 if the first is newer and -1 if the second is newer.
--showlatest rpm1 [rpm2 ...]
Select the latest version of each given rpm. Output will depend on the bestmatch and checklocal options.
--checklocal 0|1|2
Check against local rpms during showlatest. If set to 1, select only rpms for which an older local version exists. If set to 2, select also rpms for which no local version exists.
--whatprovides string
Query the provides database.
--requires rpm1 [rpm2 ...]
List all requirements for the given rpms (using the provides database to resolve requirements).
--requiresxml rpm1 [rpm2 ...]
Same as above but produces xml output suitable for inclusion in an xml comps file.
--test

Test mode. Don't download or upgrade any rpms. Just print what would be done.

--(no)verbose
Be (don't be) verbose.
--(no)hash
Print hash marks when installing rpms.
--(no)quiet
Be (don't be) quiet.
--(no)warnings
Do (don't) display warnings.
--(no)rpmnamewarnings
Display warnings about bad rpm names.
--(no)fixrpmnames
Fix rpm names after donwloading. That is, if the filename of a downloaded rpm is not of the form name-version-release.arch.rpm, it will be renamed.
--debug 1|2|3
Turn on debugging information.
--(no)debugftp
Turn on debugging information for ftp actions.
--(no)debuglwp
Turn on debugging information for lwp actions.
--(no)debugrpm
Turn on debugging information for rpm selection.
--(no)debugcomps
Turn on debugging information for comps parsing.
--version
Print the version and exit.
--help

This will show all available options.

Files

/etc/autoupdate.d/autoupdate.conf

Configuration file. World writable files will be skipped for security reasons. Empty lines, lines beginning with a #, or lines which are not of the form "Variable = value" are ignored. If the value is enclosed by back ticks, the output of the enclosed command is used instead. White space at the beginning or end of value is ignored. Valid entries are:

DoDld=0|1

Do (don't do) the download part (in particular during get mode). In get mode the download part will be skipped if all requested rpms have been found locally.

DoUpdate=0|1

Do (don't do) the update part.

DoInstall=0|1

Do (don't do) the install part.

DoKernel=0|1

Do (don't do) the kernel update part.

DoBoot=0|1

Do (don't do) include new kernels to the boot manager.

DoInitRD=0|1

Do (don't do) create an initial ram disk for new kernels.

DoMerge=0|1

Merge all new rpms into the distribution directory.

MergeMatch=0|1

Apply Include/Exclude match to rpms selected for merging. Otherwise only to rpms selected for update.

GetAll=0|1

Also look for upgrades during get mode.

GetSameBase=0|1

Get all packages with the same base name as well.

MergeAll=0|1

Merge (i.e, copy) rpms for which no local version exists as well.

DoPurge=0|1

Remove old versions from the updates directory.

LWPProtocols=pro1,pro2,...

If requested, use the LWP modules for these protocols. Default is http,https.

LWPProxy=URL

URL which will be passed as a proxy to LWP.

LWPNoProxy=domain

Don't use the LWPProxy for this domain. Can be used one or more times.

LWPProxyUser=user

User name passed to LWP for the proxy.

LWPProxyPass=pass

Password passed to LWP for the proxy.

SSHCipher=cipher1,cipher2,...

A comma-separated list of SSH-2 cipher names to be passed to the Net::SFTP(3) module. Defaults to 3des-cbc,blowfish-cbc,arcfour.

Passive=0|1

Use passive ftp as default.

FTPRetry=num

Number of retries if the first connect fails.

FTPWait=seconds

Time to wait in seconds until the next attempt to connect is made.

FTPFirewall=host.domain:port

FTP firewall to use (see Net::FTP(3)).

FTPFirewallType=0|1|...|7

FTP firewall type to use (see Net::FTP(3)).

Timeout=seconds

Timeout for network operations.

DldAddInstalled=0|1

Always add installed rpms for comparison during download. (Even if a distribution directory is given.)

DldMatch=0|1

Apply Include/Exclude match to rpms selected for download. Otherwise only to rpms selected for update.

CleanUp=0|1

Do (don't) remove old rpms after upgrading.

CleanUpKernel=0|1

Do (don't) remove kernel rpms which have been removed from the boot manager.

BootManager=string

Boot manager to use. Currently lilo(8) and grub(8) are supported. Default is lilo(8) respectively grub(8) if the corresponding executable is found.

BootScript=file

Custom boot script to install the boot manager.

BootConf=file

Boot manager configuration file. Defaults to /etc/lilo.conf for lilo(8) and /boot/grub/grub.conf for grub(8).

BootAddAsNew=0|1

Add the boot tag to the label of the new (current) image upon kernel upgrade.

BootTag=string

Custom tag for kernel images. Defaults to "-new" for new and "-old" for old images. All previous images with this tag will be removed from the boot manage.

UseBootTag=0|1

Use the boot tag even if the label contains the full version string.

KernelExt=ext1,ext2,...

Packages with the names matching ^kernel-\d, ^kernel-ext1-\d, ... are considered to be kernel packages. Defaults to "smp,enterprise,bigmem,debug".

KernelMod=mod1,mod2,...

Kernel packages with the names matching ^kernel-mod1-\d, ... are considered to be packages containig extra modules. Defaults to "unsupported,modules-alsa,ntfs".

BestMatch=0|1

Only download the rpm which matches your machine best.

RemoveBad=0|1

Do (don't) remove bad rpms (e.g., bad size or checksum) from the updates directory.

CheckSize=0|1

Do (don't) check the size of all given rpms.

CheckSig=0|1

Do (don't) check rpm signatures before upgrading.

CheckGPG=0|1

Do (don't) check rpm gpg signatures before upgrading. Will fail if no gpg signature is present.

CheckModified=0|1

Do (don't) check that the local rpm is unmodified before upgrading.

CheckVendor=0|1

Do (don't) check that old vendor strings matches the new one during upgrade.

CheckOldRequirements=0|1

Check old packages for missing requirements.

GPGHome=directory

Set the GNUPGHOME enviroment variable to this directory.

Repackage=0|1

Do (don't) call rpm with the repackage option.

RpmOption=opt

Use the additional rpm option '--opt' during upgrade.

RPMBindings=0|1|2|3

Preferred bindings for rpm we should use. The value 0 means none, 1 implies RPM(3), 2 implies RPM2(3pm) and 3 implies RPM::Perlonly(3). Unset means automatically (i.e, the first one it finds).

Resolve=0|1

Do (don't) install new packages to satisfy dependencies.

ResolveUseRPMDB=0|1

Try to resolve dependencies using the rpm data base.

ResolveAvoidNew=0|1

Try to avoid adding new rpms to resolve dependencies.

DataBase=file

Location of the provides database. Defaults to UpdateDir/DataBaseName if available and /etc/autoupdate.d/DataBaseName else.

UseDataBase=0|1

Use the provides database.

DataBaseRO=0|1

Do not write to the provides database.

DataBaseName=string

Filename for the provides database. Defaults to autoprovides.db.

UseRpmVerCmp=0|1

Use internal rpm version comparison code. Requires RPM2(3pm).

GenerateAutoInfo=0|1

Generate an autoinfo file when new rpms have been downloaded.

AutoInfoFile=file

Location of the autoinfo file. Defaults to UpdateDir/autoinfo

AutoInfoBaseDir=dir

Add this dir as basedir to the autoinfo file.

DoLock=0|1

Do (don't) create a lock file (/var/lock/autoupdate.pid).

DoLog=0|1

Do (don't) log all updated, installed rpms to the log file.

LogFile=file

Location of the log file. Defaults to /var/log/autoupdate.log. If set to syslog all messages will go to syslog (requires Sys::Syslog(3pm)).

UpdateDir=directory

Directory where the updates are stored. If the directory ends in two slashes, all sub directories corresponding to architectures suitable for the system will be checked. Moreover, all downloaded rpms will be stored according to architectures as well in this case.

InstallDir=directory

Directory where the new rpms are stored. As above but for use with the install option. Default is to use the updates directory.

RPMDir=directory

Directory where the distribution rpms are stored.

Recursive=0|1

Do (don't) recursively descent through all subdirectories of local directories.

PostUpdateScript=script

Script to execute after rpms were upgraded. The special argument "#RPMS#" will be replaced by the updated rpms.

PostDldScript=script

Script to execute after rpms were downloaded. The special argument "#RPMS#" will be replaced by the downloaded rpms.

Comps=file

Comps file to parse.

CompsDefault=0|1|2

Type of packages from an (xml) comps group to include.

Languages=lang1[,lang2[,...]]

Languages to accept when parsing a comps file.

DistVersion=string

Distribution version. The string "#DistVersion#" will be replaced by this string in the update, install and rpm directories and in the default provides database name. Moreover, the string "#DistVersionNoDot#" will be replaced by the distribution version with all dots stripped and "#DistVersionNoDot2#" will be replaced by the distribution version with all dots and trailing ".0" stripped.

DistName=string

Distribution name. Similar as distribution version. Moreover, the string "#DistNameLC#" will be replaced by the lower case version.

Define=name[=val]

Declare a new user defined variable. The new variable can now be used in all config files. The string "#name#" will be replaced by the value in the update, install and rpm directories.

DistLang=string

Distribution language. The string "#DistLang#" will be replaced by this string in the update, install and rpm directories. Defaults to en.

DistArch=string

Distribution architecture. The string "#DistArch#" will be replaced by this string in the update and rpm directories.

Exclude=regexp

Exclude rpms matching (perl) regular expression. Can be used one or more times.

Include=regexp

Include rpms matching (perl) regular expression. Can be used one or more times.

ResetPatterns

Discard all previous Include and Exclude patterns.

DldConfig=file

Dld configuration files in DldConfigDir to include. Can be used one or more times.

DldConfigDir=dir

Directory where dld configuration files are stored. Default is /etc/autoupdate.d/.

DefaultArch=arch

Default architecture to use (otherwise 'uname -m' except for athlon and alphaev6).

DefaultUser=string

Default user name (anonymous).

DefaultPass=string

Default password (autoupdate@localhost).

HTTPExt=ext1,ext2,...

Files with these extensions will be parsed during recursive search at http sites. Defaults to "html,htm,php,asp".

ShellEscapes=0

Disable shell escapes for configuration files from now on.

Verbose=0|1

Be verbose.

Quiet=0|1

Be quiet.

Warnings=0|1

Display warnings.

RPMNameWarnings=0|1

Display warnings for bad rpm names.

FixRPMNames=0|1

Fix rpm names after donwloading. That is, if the filename of a downloaded rpm is not of the form name-version-release.arch.rpm, it will be renamed.

Debug=0|1|2|3

Turn on debugging information.

IncludeFile=file

Include the given config file.

/etc/autoupdate.d/*.{dld,get}

Configuration files for ftp sites to be checked. World writable files will be skipped for security reasons. Empty lines, lines beginning with a #, or lines which are not of the form "Variable = value" are ignored. If the value is enclosed by back ticks, the output of the enclosed command is used instead. Files with the extension dld, get will be used in download, get mode respectively. Valid entries are:

URL=protocol://host.name[:port]/dir/

URL to check.

Host=host.name[:port]

The host name of the remote site.

Protocol=ftp|http|https|file|sftp

The protocol to use. Default is ftp.

User=username

The user name to be used (if none is given, anonymous ftp will be used).

Pass=password

Password for the user name (if any).

Passive=0|1

Use passive ftp.

DldNew=0|1

Get all new files from the remote site. Not only those in the distribution.

DldUnknown=0|1|2

Get unknown files which are not in the provides database. If set to 1, this is only done if there are unknown requirements. If set to 2, it will be done in any case.

DldRecursive=0|1

Do (don't) recursively descent through all subdirectories at the remote site.

DldUseAutoProvides=0|1

Search for autoprovides databases on remote servers. The content of every file autoprovides-.*.db[.gz|.bz2] will be added to the provides database if it is newer than the one we already have.

DldUseAutoInfo=0|1

Search for autoinfo files on remote servers. Every file of the type autoinfo.*[.gz|.bz2] will be scanned.

DldUseSynthesis=0|1

Search for synthesis files on remote servers. Every file of the type synthesiz.*.cz will be scanned.

DldUseHeaderInfo=0|1

Search for header.info files on remote servers. Every file of the type header.info will be scanned.

AutoProvides=/path/to/autoprovides.db

Location of a autoprovides database to be downloaded.

AutoInfo=/path/to/autoinfo

Location of a autoinfo file to be downloaded.

Synthesis=/path/to/synthesis.cz

Location of a synthesis file to be downloaded.

HeaderInfo=/path/to/header.info

Location of a header.info file to be downloaded.

RPMBaseDir=/path/to/rpms

Directory where the rpms are if they are not in the default location with respect to the autoinfo/synthesis/header.info file.

DldDirInclude=regexp

Include only directories matching the regular expression during recursive descent. Can be used one or more times.

Include only rpms whose filename including full path match the regular expresion.

Can be used one or more times.

Include only data bases whose filename including full path match the regular expresion.
FTPRetry=number

Try number of times to connect to the ftp site.

FTPWait=seconds

Time to wait between connection attempts.

Dir=directory

A directory on the host to be checked. Can be used one or more times. If a BaseDir is given, it will be added. If directory ends in two slashes, all sub directories corresponding to architectures suitable for the system will be checked.

BaseDir=directory

Will be added to all following Dir's. Can be used zero or more times.

StoreDir=directory

The directory where the rpms should be stored if not UpdateDir.

Exclude=regexp

Exclude rpms matching (perl) regular expression. Can be used one or more times.

Include=regexp

Include rpms matching (perl) regular expression. Can be used one or more times.

ResetPatterns

Discard all previous Include and Exclude patterns.

DirWarnings=0|1

If set to 0, no warnings about missing directories will be issued for all following directories.

RPMNameWarnings=0|1

Display warnings for bad rpm names.

FixRPMNames=0|1

Fix rpm names after donwloading. That is, if the filename of a downloaded rpm is not of the form name-version-release.arch.rpm, it will be renamed.

IncludeFile=file

Include the given dld config file.

Disabled=0|1

Skip this dld config file unless it is explicitly requested on the command line.

MatchDistName=regexp

Skip this dld config file unless DistName matches the regular expression regexp.

MatchDistVersion=regexp

Skip this dld config file unless DistVersion matches the regular expression regexp.

/var/spool/autoupdate

Default update directory.

See Also

perl(1), rpm(8), lilo(8), grub(8), mkinitrd(8), Net::FTP(3), Net::Config(3), Net::libnetFAQ(1), RPM(3), RPM2(3pm), RPM::Perlonly(3), lwp(3), Crypt::SSLeay(3), Net::SSLeay(3), Net::SFTP(3), Sys::Syslog(3pm).

Author

Gerald Teschl <Gerald.Teschl@univie.ac.at>.

Copyright

Copyright © 2000-2003 Gerald Teschl This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License. See the source for more information.