pam src rpm replaced?
Mike A. Harris
mharris at redhat.com
Sun Aug 24 15:50:04 UTC 2003
On Sun, 24 Aug 2003, Leonard den Ottolander wrote:
>> Also, adding new dependancies often takes more time than just
>> adding a line to a spec file.
>
>> It might seem a bit tedious to investigate these things to that
>> level, but unneeded dependancies only complicate packaging and
>> make the minimal distro install size increase.
>
> I fully agree with this. I can see this might be the case with the flex
>requirement.
No need to make smart crack remarks. The point I'm trying to
make, is that every time you add a dependancy to a package, you
also add dependancies to all of that packages dependancies. As a
simple example, make some package have even one small simple
thing that requires the package XFree86 to be installed. Now,
for correctness, you need to add a "Requires: XFree86" to that
package. At this point, by installing the package, you now have
dragged in XFree86, and all of it's dependancies, and every
single one of every one of those packages dependancies on down
the line.
One example of this is midnight commander as someone pointed out.
mc requires XFree86-libs. Someone out there might want to have
mc installed on a system completely devoid of X, and will never
be using mc inside X on that system. They might not even have a
mouse attached to the system. Nonetheless, they have no choice
but to install XFree86-libs and all of it's dependancies if they
want to install mc.
An even worse example is some small simple application you can
use in text mode requiring something in gnome. That drags in
GNOME, all of XFree86, and half the distribution.
The only way that these types of drag-in-the-whole-OS traps can
be prevented, is by adding true dependancies to the PROPER
packages after ensuring that they are true dependancies, and that
the dependancy shouldn't go at a lower level (in an already
dependant package). Another thing needed would be to have as
many things that end up being dependancy targets split out of
other packages if not doing so would cause a whackload of
software to get dependancy-domino-effect installed to meet a dep
(like the mc case above). The downside of increased package
splitup however is increased package maintenance and complexity,
and quite often end user confusion. The downside of over
specified dependancies, or deps specified at too high a level
when they should be at a lower level, or the dependancy domino
effect, is that it is hard to make a minimal OS installation
truely "small".
>> Perhaps we should have a "development-base" package, that
>> Requires all of these things, just to ensure all truly required
>> packages are installed in development installs? That might be a
>> good suggestion.
>
>Indeed probably a good idea. I usually start out with a rather
>minimal installation and add packages as needed. This is how I
>come across these missing requirements in the first place. Even
>after using Linux for many years some things that might be
>obvious to some/many aren't obvious to me. Probably because I
>haven't been doing a lot of c development until lately.
With something like up2date handling auto-installation of the
dependancy chain for a given package, that works fairly well.
One will occasionally find dependancy failures simply due to a
combination of packages being installed in a random minimal
install that have never been installed in that manner before, or
the problem never reported. So by all means, when you spot
dependancy errors, track them down and report them. As I say
above though, if for example some package seemingly wont work
without 'foo' installed, try to find out if the package itself
really does use foo, or if instead some application that the
package uses that is part of an existing dep is missing the dep
on foo.
yes, it's a PITA, but it does do 2 good things:
1) It minimizes over specified dependancies, and thus helps lower
installation sizes, while still solving the problem properly
2) It puts the dependancy exactly where it really should be
instead of one notch above that. that ensures that any other
higher level packages in the dependancy heirarchy, will also have
their deps met automatically because you fixed the problem at the
proper spot, thus fixing it for all packages at once that are
dependant on something.
If this sounds confusing, I apologize as it is hard to word in a
manner that doesn't sound like Abbott and Costello. ;o)
--
Mike A. Harris ftp://people.redhat.com/mharris
OS Systems Engineer - XFree86 maintainer - Red Hat
More information about the fedora-test-list
mailing list