novi - scan directories for the latest-version RPMs


novi [ -a|action={type} ] [ -t|--target={dir} ] [ -v|--verbose ] [ -h|--help ] source1 [source2 source3 ...]

Pass a list of RPM source directories as the last arguments. For example:

        novi -a hardlink -t /some/dir source1 source2 source3 ...


There may exist several versions of an RPM for a single product. novi scans directories for RPMs and finds the latest-version RPM for every product.

In turn, this data can be used to:

see what are the latest RPMs on your system

fold the latest RPMs into a Kickstart tree, such that you can build systems with the updates already applied

This process is part of Kickstart/Anaconda/Yum repository maintenance, described in the following article:

``Pre-Patched Kickstart Installs''


-a, --action={type}
Specify what to do with the results:

list (default) - show a list of the latest-version RPMs found in the specified directories.

hardlink - hard-link the latest-version RPMs to the specfied directory. This saves space and requires less I/O than copying the files (since hard-linking involves an extra pointer in the inode table) but requires all source and target directories to exist on the same filesystem.

softlink (symbolic link) - this is similar to hard-linking, except that the source and destination directories may exist on different filesystems. If you serve your Yum/Kickstart area via webserver, make sure the webserver is configured to follow symbolic links.

copy - copies the latest-version RPMs to the target directory. This is extremely I/O-intensive (an OS release may contain a couple gigabytes of RPMs) but makes the source and target directories completely independent of one another.

NOTE: ``copy'' functionality hasn't yet been implemented.

(All but ``list'' require a target directory, described below.)

-t, --target={dir}
Where to put the latest-version RPMs. (Used when the action is hardlink or softlink.)

-v, --verbose
enable verbose output

-h, --help
show a brief help message

source1 [source2 source3 ...]
Specify source paths for RPMs. Sources can be plain directories (in which case novi will look for source/*.rpm) or paths to repo metadata files (novi will try to load source/repodata/primary.xml.gz).

Use the repo: prefix to specify a repo metadata source:

        novi ... repo:/some/path

Plain directories require no prefix:

        novi ... /some/path


Please refer to the separate novi_examples(1) man page for examples.


Ethan McCallum

WEBSITE (still under construction)


novi calls the librpm library behind the scenes to extract RPM metadata and sort packages per RPM naming conventions. A package that doesn't follow RPM naming conventions or a bug in librpm's version comparison may skew novi's results.




None yet...