[packagers] Shared libraries in RPMforge packages...

Tom G. Christensen tgc at statsbiblioteket.dk
Wed May 16 16:04:54 CEST 2007


Kjeldgaard Morten wrote:
> Tom G. Christensen wrote:
> 
>> What if another package depends on the openexr3 binaries?
> 
> That's a pretty contrived point IMHO. Yes, another program _may_ spawn a 
> process with one of these binaries, but binaries are usually invoked in 
> the same manner, and with the same options. Of course, a binary could 
> disappear from a package. The probability of this hurting someone is 
> very low. But, as you say, it's a matter of policy ;-)
>
The new binaries may behave completely differently and have different 
arguments etc. so not so contrived as you make it out IMHO.

Since you seem to care a great deal about stuff *NOT* packaged as RPMs 
breaking when a package is updated I don't understand how you can just 
dismiss binaries going away as not a problem.

>> Allowing -devel packages to coexist in this way is more work since it 
>> will require modification of every single upstream package that need 
>> to find the headers.
> 
> Not really, since this should needs to happen if the API changes which 
> --after all-- are quite rare. In the case of an API change the upstream 
> developers of client packages will need to do something actively, so 
> we'll always have two sets of packages: those that depend on the old 
> version and those that depend on the new. FFTW is an example.
>
Say openexr puts its headers in /usr/include/openexr.
Any program that links with openexr knows that and uses include 
<openexr/blah.h>.
Now you propose to move headers to /usr/include/openexr3 and 
/usr/include/openexr4 to allow them to coexist.
How are upstream sources supposed to find the right headers without 
modification?

>> Also how do you handle that the -devel package usually contains a 
>> symlink pointing to the shared library with the unversioned name? This 
>> would clash in your example:
>> openexr3-devel:
>> /usr/lib/libIex.so -> /usr/lib/Iex.so.3.0.0
>> openexr4-devel:
>> /usr/lib/libIex.so -> /usr/lib/Iex.so.4.0.0
> 
> Good point. Basically, it is the responsibility of the upstream 
> developers to make sure that this does not happen. The FFTW folks did 
> this by making sure that the libraries that come with version 3 are all 
> named libfftw3*. That solves the problem, since the you get
> 
> libfftw.so -> libfftw.so.2.0.5
> libfftw3.so -> libfftw3.so.3.1.2
> 
> Granted, not all upstream developers are distribution-aware. In the case 
> of openexr, we'd have to either bug the developers, or rename the 
> libraries during packaging. If the package uses libtool, that fix is 
> trivial. It gives more work for the package maintainer, but that is the 
> price to pay if you want a professionel distribution and not a toy one.
> 
I see now.
You want that upstream should already have anticipated this and 
versioned libraries and header directories etc to coexist.
I disagree with that and I don't think upstream should generally prepare 
for this.
With versioned include files in particular it quickly becomes a 
nightmare for developers. How can they know which include directory to use?

It's IMHO a function of the distribution if they care to have it so that 
previous versions can coexist on a larger scale.

>> It's not like people are not warned about what is happening, you said 
>> yourself that apt-get would not allow you to install the update 
>> without removing the packages that depended on the old version.
> 
> That is only true if _all_software is installed using RPMs. Many sites 
> have locally compiled software sitting in /usr/local that depend on 
> shared libraries without this dependency being recorded in rpmdb. In 
> this case, apt-get will merrily update the packages and leave locally 
> compiled software broken.
>
That's were our opinion differs. I see nothing wrong with that scenario 
at all and I cannot see why RPMforge should go to any length to support 
such an installation.
I don't think RPMforge should really care about anything that is not 
packaged as RPMs with proper deps to resolve.

> We start meeting these problem now because we are no longer packaging 
> for Fedora. With Fedora, completely new releases are coming out all the 
> time, and traditionally, people have just upgraded the whole system at 
> once. With Fedora, problems are reset every six months.
> 
Are you referring to your own local packages?
I assume you must be since RPMforge has been dealing with the longer 
lifetime of RHEL for years.

> With CentOS, we have a much longer turnaround time, and packages are 
> gradually updated along the way. That is why these problems start 
> appearing now, and it is necessary to do something about them. RedHat 
> does not care, because they don't support the mass of third party 
> software, only the RPMs _they_ distribute. Their lack of care is 
> reflected into CentOS' codebase.
> 
I don't see Redhats policy as lack of care. Its a choice and one that 
RPMforge seems to currently mimick though perhaps it's not a conscious 
choice from Dag.

> PS: Tom, we are about 500m from each other, perhaps we should meet for a 
> cup of coffee one day... :-)
> 
I had wondered if you weren't located somewhere on campus :)

-tgc


More information about the packagers mailing list