pkg_install patches for review / testing
Oliver Eikemeier
eikemeier at fillmore-labs.com
Sat May 1 05:00:34 PDT 2004
This patch add the following features to the pkg_install suite of tools:
* new flags:
-X: use extended regular expression instead of basic ones (pkg_info,
pkg_delete, pkg_version) (PR 56961)
-S: specify a base directory where files to package could be found
(pkg_create) useful for clean room packaging: (PR 66032)
-E: show only matching package names and set the return code (pkg_info)
(PR 56961)
-r: show packages this packages depends on (documentation change) (pkg_info)
(PR 56989)
-j: show the requirements script (new functionality) (pkg_info) (PR 56989)
-T: test if string matches a glob pattern, setting the exit code accordingly
(pkg_version) (PR 56961)
* use absolute paths in all calls of external programs, to account for strange
PATHs and be able to do
env PATH= /usr/local/sbin/pkg_version -v
* fix verbose output of pkg_info when used on packages (PR 56989)
* pkg_add spawns itself as argv[0] when installing dependent packages, to
enable the use as a port.
* use INDEX or INDEX-5 depending on FreeBSD version, to enable the use on
FreeBSD 4.x as a port. (PR 56961)
* better handling of corrupt entries in /var/db/pkg, differ between corrupt
entires and packages not installed (PR 57016, 57029)
* record checksums for special files (/var/db/pkg entries) in packages
(checked with pkg_info -g, backwards compatible)
* parse version numbers of ports containing and underscore followed by a
number correctly (PR 56961)
* enable the use of csh-style {...} choices in glob patterns, e.g.
/usr/local/sbin/pkg_info 'openldap-{client,server}-*'
* use glob patterns when matching packages by origin, for example
/usr/local/sbin/pkg_info -O 'net/*'
* enable the use of relational comparisons everywhere a package is matched by
a pattern, i.e. pkg_info 'apache>=2.0' instead of 'apache-2.*' (PR 56961)
* completely rewritten version number handling, which should be more
compatible to what 4.x tools and portupgrade does and generally give the
expected results.
A new version number definition has been formulated which matches the current
usage in the ports tree. Basically, version numbers are composed out of
number-letter-number triples, with optional parts. `*' is a special component
that is guaranteed to sort before every other component, so that `>=2.*<3.*'
matches every 2.x version. Version numbers that use `+' to separate two
adjacent version numbers sort correctly.
The relational comparisons can be used to check if certain versions of a port
are installed, which is useful for conflict checking, i.e.
CONFLICTS= {,ru-}apache{,+mod_ssl}{,+ipv6}<2.*
or to record dependencies on certain versions of a port. Currently it is used
to check installed ports for vulnerable versions in portaudit.
The patch against -CURRENT is available at
http://people.freebsd.org/~eik/pkg_install-20040501.diff
MD5 = 7519c2c883c59a16f96d391660d9227c
SIZE = 57701
or as port sysutils/pkg_install-devel. If this port is installed with
PREFIX=/usr the base tools are replaced and restored when deinstalling the
port, so this is probably the most easy way to test the new version.
CVS history is available at
<http://cvs.sf.net/viewcvs.py/portaudit/pkg_install/>
The next thing I want to do is an integration of vulnerability checking in
pkg_add, probably with a plug-in mechanism for formats other than plain text.
-Oliver
More information about the freebsd-current
mailing list