[SGVLUG] rpm hell

Jeff Carlson jeff at ultimateevil.org
Mon Nov 21 19:12:02 PST 2005


Don Saxton wrote:
> Thanks.  I think you are asking the linux distro: redhat 8.0 and the rpm 
> for libmyswlclient is at 
> http://rpmseek.com/rpm-dl/libmysqlclient12-4.0.15-62447cl.i386.html?hl=com&cs=mysqlclient:PN:0:0:0:0:2294061 
> 
> the openssl I tried is at
> http://rpmseek.com/rpm-dl/openssl-0.9.7c-3mdk.i586.html?hl=com&cs=openssl:PN:0:0:0:0:1369281 
> 
> I think I have two holes in my knowledge : how rpm resolves dependencies 
> and how shared objects are versioned.
> 
> I am wondering  if I d/l the source for libssl and libcrypto and compile 
> whether that will be detected by an rpm install for  libmysqlclient.

Ouch.  No wonder it's not working for you.

First of all, RedHat 8.0 is old and unsupported.  Do you have a really 
good reason for failing to upgrade?  If you want the latest and 
greatest, get Fedora Core 4, it includes a fully working copy of 
everything you're trying to include here.  If you want long term support 
for your environment, get either RHEL 3 (costs money) or CentOS (free). 
  Notice I didn't use the word "stable?"  I believe misusing that term 
causes a misunderstanding that Fedora is somehow unstable.  It's not, 
but it won't be supported for very long, meaning you have to upgrade 
regularly.  (I don't mind this, some people do.)

Second, grabbing packages off rpmseek is kind of begging for trouble. 
Nobody really has to QA those packages.  Furthermore, you have the 
mysqlclient package from Connectiva Linux and OpenSSL from Mandrake. 
You might try grabbing the source RPMs for these and rebuilding them, 
but I wouldn't try it.  Again, just upgrade your box and it will be fine.

The discussion on how RPM records library versions and resolves 
dependencies is actually quite long.  Basically, every file installed 
via RPM is recorded along with which package it belongs to, its 
timestamp, size, checksum, whether or not that file is actually a 
directory or symlink, and some RPM specific meta data, like the fact the 
file is actually documentation (can be skipped with --excludedocs) or is 
a config file (checksum will change and will not be overwritten during 
an upgrade).

Every package also includes a list of known dependencies.  Most of these 
are discovered by the RPM packaging procedure which runs ldd on all the 
binaries included, or by the packager himself who includes this data in 
the packaging instructions.  During RPM install or upgrade, dependencies 
are checked and if any are missing, the RPM command will block the 
install.  This is why tools like yum were written, they can 
automatically download the dependencies and install them at the same time.

If you build the dependencies from source and then try to install the 
final package from RPM, it will fail.  The dependencies must exist in 
the RPM database, not just the file system.

Again, upgrading to the latest and greatest will give you what you want. 
  Or you can rebuild all of this from source and forgo using RPM. 
Basically, OpenSSL is used in so many other programs that attempting to 
swap it out is going to force you to replace so many corequisites that 
you might as well have upgraded anyway.  Either that or you will have to 
learn to build a compatibility package that provides what the old 
corequisites need, while providing the new functionality in a new 
package.  Upgrading is far easier.


More information about the SGVLUG mailing list