[2569] in SIPB_Linux_Development

home help back first fref pref prev next nref lref last post

Re: athena-libc5 and genhdlist

daemon@ATHENA.MIT.EDU (Salvatore Valente)
Wed Feb 10 19:55:03 1999

Date: Wed, 10 Feb 1999 19:54:56 -0500
To: warlord@MIT.EDU
Cc: linux-dev@MIT.EDU
From: Salvatore Valente <svalente@MIT.EDU>


Derek wrote:

	What bug in genhdlist is tickled from the original athena-libc5
	package?

This is a good one.  (It's not really a bug in genhdlist, but I didn't
want to document the whole thing in an RCS log entry.)

When you create an rpm package, rpm does these two things:

1. It does "ldd" (or equivalent) on each executable in the package,
   and lists the sonames of each required shared library in "Prereqs".

2. It gets the soname of each shared library in the package, and puts
   those sonames in "Provides".

So, for example, the "info" package has a Prereq of "libz.so.1", and
the "zlib" package Provides "libz.so.1".

Of course, rpm decided that the athena-libc5 package also Provides
libz.so.1.

The athena-libc5 package has a Prereq of fileutils (for the
postinstall script).  fileutils has a Prereq of info.  (I don't know
why.)  info has a Prereq of libz.so.1.

Circular prerequisite chain.  Oops.

The ideal solution would be for rpm to store more info than just the
soname in the Prereqs and Provides field.  For example, it would be
nice if the athena-fileutils package could be made to Provide
"libz.so.1(5)" and other libc5 packages could be made to Prereq
"libz.so.1(5)".  However, that would be a lot of work.

An acceptable solution would be to find a way to tell rpm, as it
builds the athena-libc5 package, "This package doesn't Provide
anything!  These may look like shared libraries, but they're not
really shared libraries."  For example, one could modify rpm to accept
lines in the .spec file of the form:

%attr(noprovide) /usr/i486-linux-libc5/lib/libz.so.1.0.4

I'll probably make that modification to rpm eventually.

Sal.

home help back first fref pref prev next nref lref last post