 
 
 
 
 
RPM-Changes-4.htmlNext RPM-Changes-2.htmlPrevious RPM-Changes.html#toc3Contents 3. Changes 
In this section we will outline all changes in RPM from version
2.3 until the second edition of 
Maximum RPM is released.
3.1 2.2.11 to 2.3 
This is mostly an internal cleanup release.
are memory leaks, but the functions are only used between a fork()and 
exec() so it doesn't mattercreated directories are stamped with mtime from the file list 3.2 2.3 to 2.3.1 
This release is mainly an internal cleanup release for i18n efforts
and for some internal functions that didn't behave with serial numbers.
changed --help routing to have intelligent line wrapping
to make i18n efforts easier
treat RPM_CHAR_TYPE as RPM_INT8_TYPE for queriesmade rpmEnsureOlder() internal to lib/install.cadded rpmVersionCompare() to compare version/release/serial numbers
for packages -- returns like 
strcmp()stdout/stderr were getting closed after running a verify scriptrelocting packages didn't work with the packages contained the
directory which was it's prefix
3.3 2.3.1 to 2.3.2 
fixed bug in new rpmVersionCompare() which made it worse then
useless (thanks to Norbert Kiesel)
3.4 2.3.2 to 2.3.3 
Ripped out header internals and redid them. Any compatibility
problems this causes are 
bugs as it should be completley
transparent. If this works the devil better buy some Prestone™.
Use cp -pr instead of cp -ar for %doc expansionlook for non-POSIX (broken) chmodinclude local copies of glob/fnmatchswitched to popt from getopt, which allows command line aliasingread initial aliases from /usr/lib/rpmpopt then /etc/popt and
$HOME/.poptcleanup up rdev verification (only verifies device files, checks
device related mode bits as well)
made tools/dumpdb read the rpmrc so it can find the databaseadded --nomd5 for -V and -Kbunch of minor cleanups to avoid warnings on other OS's 3.5 2.3.3 to 2.3.4 
%changelog processingfixed broken requires/conflicts parsing for spec filevastly improved --rebuilddb's robustnessadded conflicts documentation to docs/dependencies (see section 
RPM-Changes-5.html#conflictsConflicts  for more detailed documentation).using multiple query formats has them all concatenatedremoved stdin based query and verify selectorsinstalls rpmpopt in libdirmoved --provides and --scripts to rpmpoptadded --setperms, --setugids--resign/--addsign was broken in 2.3.3 from popt conversion 3.6 2.3.4 to 2.3.5 
%{#TAG} in query format prints the array lengthcleanup up protoypes in rpmlib.hlet -Vp work on URLsdon't set umask(0) anymore -- that confused programs which
link against rpmlib quite badly
moved print out in rpm -v -i to occur after any warnings
to pretty up the output a bit
added default optflags for powerpcrun shell for post/pre scripts in debug mode with -sx for
some silly shells
installing source packages with --root checked for the
sources/specs directory to exist outside of the root -- fixed
modified toplevel Makefile to run dependency generation only
against referenced sources
array size mismatches in --qf should send error to stderrmade verify verify owner and groups by name rather then by id -- if
the symbolic names aren't available use the uids
3.7 2.3.5 to 2.3.6 
-Vf uses realpath() now-Vp lets you use --ftpproxy, --ftpportchanged popt format, breaking all popt alises :-(added ability to alias character arguments to poptmoved --requires, --info to /usr/lib/rpmpoptRPM is more forgiving of blank user names (dumb)popt searches for aliases in the correct order nowcleanup query code to handle missing uid lists bettercleanup up configure.in a tad 3.8 2.3.6 to 2.3.7 
fixed nasty memory link in -Vaconfigure checks for -lnsl explicitly rather then linking it
to 
-lsocket (for NCR SysVR4)configure checks for dirent.hmodified glob.c to include config.h and use HAVE_DIRENT_Hcleanup of LIBS/LIBPATH mess a bit more 3.9 2.3.7 to 2.3.8 
added -t? options to build packages from tarballs which contain
.spec files instead of from the .spec files directly
added Makefile rule for building rpmconvert (which is almost
never needed) -- this isolated gdbm dependence to this target
--requires shouldn't imply -qfixed but in changelog processing which made it hang on '*' in a
changelog entry
rpm --erase wasn't returning proper error codes with package
removal failed
3.10 2.3.8 to 2.3.9 
reworked %setup to allow multiple -a and -b options, which
should noticeably ease the task of unapcking multiple tar files
md5 sum's were calculated incorrectly on big endian machines
from 2.3.2 through 2.3.8 -- this was fixed and some hacks were
done to keep verification working
added --allmatches to allow erasing multiple versions/releases
of a package
changed ftp URL's to use \r\n, not just \n (this should let RPM
work with some picky (but rfc compliant) ftp servers
simple spec file macros (see section 
RPM-Changes-4.html#macrosMacros  for 
detailed documentation)
should now process entire file list before failing/message HELP ME
3.11 2.3.9 to 2.3.10 
new predefined macros: %SOURCEn %PATCHn %percnt;SOURCEURLn %PATCHURLnfix anomoly with %files -f <file> and %docignore config bit when it's set on directories (which allows
users to replace directories with symlinks)
don't set config bit on directories%tags are now case sensitive (macros too) 3.12 2.3.10 to 2.3.11 
fixed newlines in --scripts outputfix handling of source files with bad owners/groups 3.13 2.3.11 to 2.4 
set RPM_INSTALL_PREFIX environment variable when running
verify scripts
switched to CVS and updated some Makefile rulesmade many strings in rpm program (though not yet in the various
libraries) translatable
eight character user names could break -qlvrequirements which begin with a leading / require files (in
the database!) instead of packages
get path to gzip from /usr/lib/rpmrc rather then just hoping it's
in the path
don't set owner/group if binaries installed by ``make install''don't use cpio when installing packagesfixed bug which affected dependencies on the Alphacomplain if critical rpmrc variables (cpiobin, gzipbin, etc) aren't
set anywhere
added check for systems whose chown() follows symlinks. If configure
is run as root, this should get it right, otherwise it assumes
chown() does not follow symlinks. You can use 
--enable-broken-chownto force configure to think chown does indeed follow symlinks.
added packager and url to default -qi output 3.14 2.4 to 2.4.1 
take advantage of lchown() if it's availablefixed configure script to assume chown() doesn't follow symlinks
if 
lchown() isn't available and configure is not being run as rootadded :shescape query format type for strings, which prints strings
which will survive a single level of shell expansion
fixed --setperms and --setugids to handle empty packages and 
packages with odd filenames
created noarch architecture which everything is compatible withfixed group verification (Benedict Lofstedt)don't backup config files on netsharedpathsadded info on --build{arch|os} to --help and usage messages 3.15 2.4.1 to 2.4.2 
added fsnames and fssizes virtual query tagsadded rpmdbFindByHeader() and rpmdbFindByTag() public functionsadded rpmfilename tag to rpmrc to define the filename format to
use for binary packages (note the rpmdir is prepended to it)
updated man pagesnetsharedpath entries shouldn't match partial directory names
anymore (a 
netsharedpath of /usr/lib shouldn't affect /usr/libexec)don't backup config files on netsharedpaths (take 2)added day query format which is like date, but doesn't print
any time
added --changelog alias to query a packages changelog entryfflags query type displays s for specfiles, m for missingok
files, and 
n for noreplace filesimplemented %config(missingok) flag in installadded --allfiles flag for -i and -U, which forces all files (even
missingok files) to be installedimplemented %config(noreplace) for the install, but it hasn't
been tested in any way
added ppc/rs6000 differntiation for AIXIP is considered the same as mips (not sgi)added IRIX64 OS, it's compatible w/ IRIX 3.16 2.4.2 to 2.4.3 
implemented install time prerequisitesimplemented ternary operator as query expression--scripts now only outputs info on scripts that are actually presentuses chroot() for installs --root optionadded a -p option to the scripts to specify which program a script is run through.  If -p option is used with an empty script the program specified is executed directly.the -p option (or /bin/sh if no -p is specified) is now added as a prerequisite. 3.17 2.4.3 to 2.4.4 
-qi output only displays package and URL fields if there is something there to displayadded buildarch/buildos compatibility tables and listed values in the output of --showrc.GNU cpio is no longer used or required by RPM.  Packages created with RPM 2.4.4 and later can not be installed with RPM 2.4 to 2.4.3 (ealier versions of RPM will work fine, however).  An ``error -2 reading header'' happens when this is attempted.Added provides tag to rpmrc to allow easy fulfillment of automatic dependenciesAdded --justdb for install, upgrade, and erasure.  This causes a database update without actually adding or removing any files.Added BuildArchitectures: tag to spec file to enable builds for alternate or multiple architectures.librpm can now be distributed under the terms of the LGPLadded --noorder option to skip package reordering 3.18 2.4.4 to 2.4.5 
Nothing significant to users added. 3.19 2.4.5 to 2.4.6 
added os_canon entries for BSD/OS and NextStepfixed bugs installing version 1 packagesreplaced temporary file creation to be race-condition safeprerequisites may not specify versions 3.20 2.4.6 to 2.4.7 
the find-requires script now adds requires for shell scriptsset -x in debug shells, not -xs 3.21 2.4.7 to 2.4.8 
added noarch build compatibilities for ppc, m68kadded Obsoletes: tag.  An upgrade to a package that obsoletes another package will remove any package that has been obsoleted.moved popt into a separate librarydropped release number from directories created by %doc (now just name-version instead of name-version-release)added buildarch/buildos macrosadded %ghost file option.  This allows a package to ``assume ownership'' of a file that might have been created by a post install script or other similar method.  There is no file in the package, but if the file exists when the package is removed that file is removed as well.  Also, the MD5 sum, timestamp, and file size are not verified. 3.22 2.4.8 to 2.4.9 
added mips to noarch compat listadded support for patch greater than version 2.1 3.23 2.4.9 to 2.4.10 
sources are now installed with the uid/gid of the process rather than the ids that were used when the source RPM was created 3.24 2.4.10 to 2.4.11 
made %% work in query formatsfixed --setperms problems 3.25 2.4.11 to 2.4.12 
added Turkish message catalog 3.26 2.4.12 to 2.5 
--rmsource option added to remove sources and spec file after successful RPM buildall scripts can now use -p prog%attr(mode, user, group [, dirmode])added %defattr() to set the default attributes for all files following this tag (or until a new defattr tag is reached)added %defverify() to set default verify paramters for all files following this tag (or until a new defverify tag is reached)Root: is now deprecated.  Use BuildRoot: instead.``nosrc'' sources are not removed when sources are removed.New tag DocDir: to set alternate documentation directory (default is /usr/doc)%define macros only work if they start on the first character of a line.  This is so that you can use the string ``%define'' in comments and/or changelog entries.Standard Macros are now: tag names, buildarch, buildos, buildarch_lc, buildos_lc, PATCHn, SOURCEn, PATCHURLn, SOURCEURLn, sourcedir, builddir, optflagsdeprecated require_distribution, require_icon, require_vendorexport variables in scripts%lang() now available in the %files section to specify which language set certain files belong to.%description -l <lang> allows you to add descriptions in specified languages.Added Summary(lang): so that summaries may be given in specified languages.Can now handle files with spaces in the name (you must double quote them, however)You can now specify buildshell in rpmrc to set shell used for build scripts (default is /bin/sh)You can now specify instchangelog in rpmrc to limit the number of changelog entries that are stored in your RPM database for each package installed (use -1 to store all of them).  Default is 5.You can now do generic file relocations at install time of a package.  Use --relocate oldpath=newpath to relocate everything that would have been in oldpath into newpath.  This only works if oldpath is specified as a Prefix: or if you use --badreloc to force it.Added Prefixes: tag so that you can specify more than one relocatable area for a package.  Each prefix should be space delimited.Spaces are now allowed in Group names.Now supports big and little endian MIPS machines.RPM should build with non-gcc compilers and non-GNU versions of makeAdded triggers so that packages can install scripts that get ``triggered'' by the install or removal of another package.  See section 
RPM-Changes-6.html#triggersTriggers  for more details. RPM-Changes-4.htmlNext RPM-Changes-2.htmlPrevious RPM-Changes.html#toc3Contents 