RPM-4.0 Hint

Jason Gurtz jason at tommyk.com
Thu Nov 2 11:05:51 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 of 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?).  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 http://www.rpm.org/

Package Name:	rpm-4.0.tar.gz		(RPM 4.0)
Download here:	ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/
USE:			This is the main package

Package Name:	zlib-1.1.3.tar.gz		(zlib compression lib.)
Download here:	ftp://ftp.freesoftware.com/pub/infozip/zlib/
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:	ftp://ftp.gnupg.org/pub/gcrypt/gnupg/
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
our next package.  :)

So, let's do the Berkeley db-3.17 package.  Two things are special:  the
configure script is located in the dist sub-directory
(/usr/src/db-3.1.17/dist/), and you run configure like this:

	./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:

	./autogen.sh --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 linuxfromscratch.org
and put unsubscribe in the subject header of the message

More information about the blfs-support mailing list