int RPM_4.0_Hint(long_awaited); {beta};

Jason Gurtz jason at
Wed Nov 1 19:16:15 PST 2000

TITLE:		Installation of RedHat Package Manager 4.0
AUTHOR:		Jason Gurtz <jason(at)tommyk(dot)com>

	The RPM package is used for installing, building, and maintaining '.rpm'

	RPM is a package manager of dubious value to the average LFS'er.  However,
certain closed-source commercial applications require it for installation.
Additionally, playing with it may be of educational value, and it may ease
administration of a large and diverse network of UNIX and UNIX-like
computers.  Maybe it can do more than simply "Ruining a Perfectly good
Machine."  ;)

	The INSTALL file mentions that both the Berkeley db1 and db3 packages are
needed.  I did not need to use or install the db1 package for a successfully
installed build or RPM-4.0.  Needless to say, I am not an experienced user
of RPM, so there may be some functionality that requires this somehow (maybe
conversion of old RPM packages to new?).  Additionally, I have not installed
this on a "fresh" LFS system, so I may have inadvertently left out a step or
few (don't think so tho).  In any instance, please post any needed changes
to the lfs-apps ML and or mail me direct at the above addy  :)

	RedHat is the maintainer and active developer of the RPM package.  It's
home page is

Package Name:	rpm-4.0.tar.gz		(RPM 4.0)
Download here:
USE:			This is the main package

Package Name:	zlib-1.1.3.tar.gz		(zlib compression lib.)
Download here:
USE:			For compression support

Package name:	db-3.1.17.tar.gz		(Berkeley db3)
HTTP Download:
USE:			RPM-4.0 uses this as it's database

Package Name:	gnupg-1.0.4.tar.gz	(GNU Privacy Guard)
Download here:
USE:			For Cryptographically signing your packages

These other packages are needed/recommended, but you should have these all
ready installed as part of the base LFS system.

Among other things:
-GNU tar


First we'll install zlib.  (should be easy)

	./configure && make test && make install

Next lets install our crypto (gnupg)...  The use of this software requires a
source of random numbers.  There are a few ways, but the easiest is to use
/dev/random and /dev/urandom.  If you don't have these in your /dev
directory create them with:

	mknod /dev/random c 1 8
	mknod /dev/urandom c 1 9

Now we build.  As root do:

	./configure --disable-nls && make && make install

Installation defaults to /usr/local/bin, make sure this is in your path.
When install finishes you should create your key pair.  As root:

	gpg --gen-key

This will start a script that creates a dir or few and some files.  It will
tell you to re run it so just type the same thing again (gpg --gen-key).
This starts a scrip asking for real name, etc to be associated with your
key.  Because your system is prolly not to busy it may complain that it
needs more Bytes from the /dev/random.  You can simply start typing (a lot)
what ever you feel like and it will finish, but the easiest way to generate
more randomness is to log into another virtual terminal and start compiling
our next package.  :)

So, let's do the Berkeley db-3.17 package.  Only one thing is special;
running configure like:

	./configure --enable-compat185

This is because the original RPM versions used the db1 database from
sleepycat.  Next, do your:

	make && make install

While this is going (takes a little bit) monitor your gnupg key creation.
When that finishes make a symlink in /usr/local/bin for backwards

	ln -s /usr/local/bin/gpg /usr/local/bin/gpgm

That was the last part to installing gnupg.  Now when the db3 finishes
installing note that it is installed to /usr/local/BerkeleyDB.3.1/...  That
will be important for our last step, installing the rpm-4.0 package.

First run the preliminary script like this:

	./ --noconfigure

Somewhat irritatingly a source file seems to want to find something where
it's not, so:

	cd /usr/src/rpm-4.0/lib/ && vim db3.c

type ':12' <enter> to goto line 12 and change it to read:

	#include </usr/local/BerkeleyDB.3.1/include/db.h>

Now we're ready to go.  Pay careful attention to the stuff prepended to the
../configure invocation:

	LIBS='-L/usr/local/BerkeleyDB.3.1/lib' \
> CPPFLAGS='-I/usr/local/BerkeleyDB.3.1/include' \
> ./configure

When ./configure finishes just run (as root):

	make && make install

You can disregard all the pointer warnings that fly by.  When it's done, you
should be able to type:

	rpm --version

and see the version come up.  One last thing to do is initialize and rebuild
the database.  As root, type:

	rpm --initdb
	rpm --rebuilddb

A good final test of basic functionality is to download an SRPM package.
This will be  someDumbProg-0.0.1.src.rpm  All it is is a tarball in
disguise.  to get at it simply:

	rpm -i -vv someDumbProg-0.0.1.src.rpm

note from the -vv (extra verbose) output that the .tar.gz gets dumped in
/usr/local/src/redhat/SOURCES  along with maybe a patch file or other nice
extras.  Also note that the database itself is at
/var/local/lib/rpm/Packages  There are 3 levels of "rc" config files. global
is /usr/local/lib/rpm/rpmrc  Machine specific is /etc/rpmrc user level is


Cheers and TIA for any feedback!

Unsubscribe: send email to lfs-apps-request at
and put unsubscribe in the subject header of the message

More information about the blfs-support mailing list