TITLE: Installation of RedHat Package Manager 4.0 LFS VERSION: 2.3.6 AUTHOR: Jason Gurtz SYNOPSIS: The RPM package is used for installing, building, and maintaining '.rpm' packages. HINT: Background: 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." ;) *NOTE* 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 :) Source: 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: http://www.sleepycat.com/update/3.1.17/db-3.1.17.tar.gz 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: -bzip2 -gzip -gettext -perl -GNU tar Installation: 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. 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 compatibility: 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' to goto line 12 and change it to read: #include 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 ~/.rpmrc