=Name
pkg_noisrev--a fast way to summarize installed versions of FreeBSD packages.
==Synopsis
pkg_noisrev [options]
==Description
The pkg_noisrev utility is a very fast version of pkg_version program that ships with FreeBSD. Consider the example from virtualized FreeBSD 8.2 (with 696 installed packages) where virtual hdd is a main performance bottle neck:
% time pkg_version [...] 21.006u 68.076s 1:59.73 74.3% 403+713k 1155+0io 3pf+0w
% time pkg_noisrev [...] 12.261u 10.249s 0:26.29 85.5% 95+1128k 0+0io 0pf+0w
pkg_noisrev is basically ~ 4.6 times faster. It achieves this speed by doing its work in several parallel threads + making some not-so-interesting tricks of extracting version strings from Makefiles.
pkg_noisrev also adds filtering to the output, thus you can, for example, only see out of sync packages. If you are a portmaster user, you may like --likeportmaster option (I do!).
The options are as follows:
- --config-dirs
List all possible locations for the configuration file. The first found wins.
- --config NAME
The name of the configuration file. If it contains / in it, the list from --config-dirs is ignored.
- -V
Show version and exit.
- -v
Tries to create a log in /tmp/pkg_noisrev.log file.
- --pkg-dir STR
Set the alternate package db directory.
- --ports-dir STR
Set the alternate ports db directory.
- --outofsync
Filter all but out of sync packages.
- --missing
Filter all but packages that doesn't exists in ports.
- --likeportmaster
Print like (but not quite) "portmaster -L".
==Installation
(Only if you are not installing the gem.)
pkg_noisrev ships with a shared library (the comparator of a 2 versions-as-a-string that was extracted from pkg_version sources) which must be compiled before you can use the program.
cd to a directory with pkg_noisrev sources and type:
% rake mydll:default
Then run bin/pkg_noisrev or make a symlink to it in one of your directories in PATH.
==Configuration
pkg_noisrev looks for its configuration at 3 places at start up.
-
At PKG_NOISREV_CONF env variable. (Its format is exactly similar to CL options.)
-
At the configuration file. Its default name is pkg_noisrev.yaml and it can be stored in several system directories which are observable by --config--dirs CL option.
-
At command line.
Higher number levels overrides the values from lower number levels.
The configuration file must be in YAML format. Look into gem env gemdir/gems/pkg_noisrev-x.y.z/etc/ directory for samples.
==Examples
% ri Pkg_noisrev % pkg_noisrev --likeportmaster % pkg_noisrev --outofsync % pkg_noisrev --missing --likeportmaster