RPM-Changes-4.html
Next
RPM-Changes-2.html
Previous
RPM-Changes.html#toc3
Contents
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 matter
created 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 queries
made
rpmEnsureOlder()
internal to
lib/install.c
added
rpmVersionCompare()
to compare version/release/serial numbers
for packages -- returns like
strcmp()
stdout/stderr were getting closed after running a verify script
relocting 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
expansion
look for non-POSIX (broken)
chmod
include local copies of
glob/fnmatch
switched to
popt
from
getopt,
which allows command line aliasing
read initial aliases from
/usr/lib/rpmpopt
then
/etc/popt
and
$HOME/.popt
cleanup 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 database
added
--nomd5
for
-V
and
-K
bunch of minor cleanups to avoid warnings on other OS's
3.5 2.3.3 to 2.3.4
%changelog
processing
fixed broken requires/conflicts parsing for spec file
vastly improved
--rebuilddb
's robustness
added conflicts documentation to
docs/dependencies
(see section
RPM-Changes-5.html#conflicts
Conflicts
for more detailed documentation).
using multiple query formats has them all concatenated
removed stdin based query and verify selectors
installs
rpmpopt
in
libdir
moved
--provides
and
--scripts
to rpmpopt
added
--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 length
cleanup up protoypes in
rpmlib.h
let
-Vp
work on URLs
don'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 powerpc
run 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 stderr
made 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,
--ftpport
changed popt format, breaking all popt alises
:-(
added ability to alias character arguments to popt
moved
--requires,
--info
to
/usr/lib/rpmpopt
RPM is more forgiving of blank user names (dumb)
popt searches for aliases in the correct order now
cleanup query code to handle missing uid lists better
cleanup up
configure.in
a tad
3.8 2.3.6 to 2.3.7
fixed nasty memory link in
-Va
configure checks for
-lnsl
explicitly rather then linking it
to
-lsocket
(for NCR SysVR4)
configure checks for
dirent.h
modified
glob.c
to include
config.h
and use
HAVE_DIRENT_H
cleanup 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
-q
fixed 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#macros
Macros
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 %PATCHURLn
fix anomoly with %files -f <file> and %doc
ignore 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
output
fix 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 rules
made many strings in rpm program (though not yet in the various
libraries) translatable
eight character user names could break -qlv
requirements 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 packages
fixed bug which affected dependencies on the Alpha
complain 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-chown
to 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 available
fixed configure script to assume
chown()
doesn't follow symlinks
if
lchown()
isn't available and configure is not being run as root
added
: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 with
fixed group verification (Benedict Lofstedt)
don't backup config files on
netsharedpaths
added 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 tags
added
rpmdbFindByHeader()
and
rpmdbFindByTag()
public functions
added rpmfilename tag to rpmrc to define the filename format to
use for binary packages (note the rpmdir is prepended to it)
updated man pages
netsharedpath
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 entry
fflags
query type displays
s
for specfiles,
m
for missingok
files, and
n
for noreplace files
implemented
%config(missingok)
flag in install
added
--allfiles
flag for
-i
and
-U
, which forces all files (even
missingok
files) to be installed
implemented
%config(noreplace)
for the install, but it hasn't
been tested in any way
added ppc/rs6000 differntiation for AIX
IP 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 prerequisites
implemented ternary operator as query expression
--scripts
now only outputs info on scripts that are actually present
uses
chroot()
for installs
--root
option
added 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 display
added 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 dependencies
Added
--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 LGPL
added
--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 NextStep
fixed bugs installing version 1 packages
replaced temporary file creation to be race-condition safe
prerequisites may not specify versions
3.20 2.4.6 to 2.4.7
the
find-requires
script now adds requires for shell scripts
set -x in debug shells, not -xs
3.21 2.4.7 to 2.4.8
added noarch build compatibilities for ppc, m68k
added
Obsoletes:
tag.  An upgrade to a package that obsoletes another package will remove any package that has been obsoleted.
moved popt into a separate library
dropped release number from directories created by
%doc
(now just name-version instead of name-version-release)
added buildarch/buildos macros
added %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 list
added 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 formats
fixed
--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 build
all 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, optflags
deprecated
require_distribution, require_icon, require_vendor
export 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 make
Added triggers so that packages can install scripts that get ``triggered'' by the install or removal of another package.  See section
RPM-Changes-6.html#triggers
Triggers
for more details.
RPM-Changes-4.html
Next
RPM-Changes-2.html
Previous
RPM-Changes.html#toc3
Contents
