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 matter
This 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.c
rpmVersionCompare()
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
expansionchmod
glob/fnmatch
popt
from getopt,
which allows command line aliasing/usr/lib/rpmpopt
then /etc/popt
and
$HOME/.popt
rdev
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/rpmpopt
configure.in
a tad
-Va
-lnsl
explicitly rather then linking it
to -lsocket
(for NCR SysVR4)dirent.h
glob.c
to include config.h
and use HAVE_DIRENT_H
LIBS/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 -q
rpm --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
--scripts
now only outputs info on scripts that are actually presentchroot()
for installs --root
option-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.-p
option (or /bin/sh
if no -p
is specified) is now added as a prerequisite.
-qi
output only displays package and URL fields if there is something there to display--showrc
.provides
tag to rpmrc to allow easy fulfillment of automatic dependencies--justdb
for install, upgrade, and erasure. This causes a database update without actually adding or removing any files.BuildArchitectures:
tag to spec file to enable builds for alternate or multiple architectures.--noorder
option to skip package reordering
os_canon
entries for BSD/OS and NextStep
find-requires
script now adds requires for shell scripts
Obsoletes:
tag. An upgrade to a package that obsoletes another package will remove any package that has been obsoleted.%doc
(now just name-version instead of name-version-release)
patch
greater than version 2.1
--setperms
problems
--rmsource
option added to remove sources and spec file after successful RPM build-p prog
%attr(mode, user, group [, dirmode])
%defattr()
to set the default attributes for all files following this tag (or until a new defattr tag is reached)%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.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.tag names, buildarch, buildos, buildarch_lc, buildos_lc, PATCHn, SOURCEn, PATCHURLn, SOURCEURLn, sourcedir, builddir, optflags
require_distribution, require_icon, require_vendor
%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.Summary(lang):
so that summaries may be given in specified languages.buildshell
in rpmrc to set shell used for build scripts (default is /bin/sh
)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.--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.Prefixes:
tag so that you can specify more than one relocatable area for a package. Each prefix should be space delimited.