In this section we will outline all changes in RPM from version 2.3 until the second edition of Maximum RPM is released.
This is mostly an internal cleanup release.
fork()
and exec() so it doesn't matterThis release is mainly an internal cleanup release for i18n efforts and for some internal functions that didn't behave with serial numbers.
--help routing to have intelligent line wrapping
to make i18n efforts easierRPM_CHAR_TYPE as RPM_INT8_TYPE for queriesrpmEnsureOlder() internal to lib/install.crpmVersionCompare() to compare version/release/serial numbers
for packages -- returns like strcmp()
rpmVersionCompare() which made it worse then
useless (thanks to Norbert Kiesel)
cp -pr instead of cp -ar for %doc expansionchmodglob/fnmatchpopt from getopt, which allows command line aliasing/usr/lib/rpmpopt then /etc/popt and
$HOME/.poptrdev verification (only verifies device files, checks
device related mode bits as well)tools/dumpdb read the rpmrc so it can find the database--nomd5 for -V and -K
%changelog processing--rebuilddb's robustnessdocs/dependencies (see section
Conflicts for more detailed documentation).rpmpopt in libdir--provides and --scripts to rpmpopt--setperms, --setugids--resign/--addsign was broken in 2.3.3 from popt conversion
rpmlib.h-Vp work on URLsumask(0) anymore -- that confused programs which
link against rpmlib quite badlyrpm -v -i to occur after any warnings
to pretty up the output a bit-sx for
some silly shells--root checked for the
sources/specs directory to exist outside of the root -- fixed--qf should send error to stderr
-Vf uses realpath() now-Vp lets you use --ftpproxy, --ftpport:-(--requires, --info to /usr/lib/rpmpoptconfigure.in a tad
-Va-lnsl explicitly rather then linking it
to -lsocket (for NCR SysVR4)dirent.hglob.c to include config.h and use HAVE_DIRENT_HLIBS/LIBPATH mess a bit more
-t? options to build packages from tarballs which contain
.spec files instead of from the .spec files directlyrpmconvert (which is almost
never needed) -- this isolated gdbm dependence to this target--requires shouldn't imply -qrpm --erase wasn't returning proper error codes with package
removal failed
%setup to allow multiple -a and -b options, which
should noticeably ease the task of unapcking multiple tar files--allmatches to allow erasing multiple versions/releases
of a package/message HELP ME
%SOURCEn %PATCHn %percnt;SOURCEURLn %PATCHURLn
--scripts output
RPM_INSTALL_PREFIX environment variable when running
verify scripts/ require files (in
the database!) instead of packages/usr/lib/rpmrc rather then just hoping it's
in the path--enable-broken-chown
to force configure to think chown does indeed follow symlinks.
lchown() if it's availablechown() doesn't follow symlinks
if lchown() isn't available and configure is not being run as root:shescape query format type for strings, which prints strings
which will survive a single level of shell expansion--setperms and --setugids to handle empty packages and
packages with odd filenamesnoarch architecture which everything is compatible withnetsharedpaths--build{arch|os} to --help and usage messages
fsnames and fssizes virtual query tagsrpmdbFindByHeader() and rpmdbFindByTag() public functionsnetsharedpath entries shouldn't match partial directory names
anymore (a netsharedpath of /usr/lib shouldn't affect /usr/libexec)day query format which is like date, but doesn't print
any time--changelog alias to query a packages changelog entryfflags query type displays s for specfiles, m for missingok
files, and n for noreplace files%config(missingok) flag in install--allfiles flag for -i and -U, which forces all files (even
missingok files) to be installed%config(noreplace) for the install, but it hasn't
been tested in any way