[TriLUG] Debian Sid/Unstable

Kevin Hunter Kesling hunteke at earlham.edu
Fri Feb 28 12:48:10 EST 2014


At 11:25am -0500 Fri, 28 Feb 2014, Sean Alexandre wrote:
> On Fri, Feb 28, 2014 at 09:53:31AM -0500, Kevin Hunter Kesling wrote:
>> I recall noting that Apple's solution to the DLL-hell of Windows
>> was to encourage application-specific copies of common libraries.

>> I'm curious -- for exactly the reason you mention about packages X
>> and Y having conflicting system library requirements -- why at
>> least the desktop Linux distributions haven't attempted to migrate
>> to something along these lines.
>
> I'll take a stab at this, and I'm only speaking as a Debian user...
>
> I can think of two reasons: (1) system stability, and (2) security.
>
> On (1): Debian does a good job of making sure everything
> iteroperates. Having multiple versions of the same thing makes this
> harder. Granted, if this is just a couple of client apps that don't
> interoperate it shouldn't be a problem. But, if it's different
> server pieces talking to each other it could quickly get messy.

Huh, I don't see this.  The whole point of what I'm getting at is that 
dynamically loaded libraries are built per application.  If a system 
piece needs to talk to another, the general wisdom is to talk over a 
clean interface.  For example, ESR talks about this in Chapter 1 of The 
Art of Unix Programming and has this as the first rule of Unix 
programming philosophy:

     1. Rule of Modularity: Write simple parts connected by clean
        interfaces.

In the same chapter, he writes:

     Unix tradition strongly encourages writing programs that read
     and write simple, textual, stream- oriented, device-independent
     formats. Under classic Unix, as many programs as possible are
     written as simple filters, which take a simple text stream on
     input and process it into another simple text stream on output.
     Despite popular mythology, this practice is favored not because
     Unix programmers hate graphical user interfaces. It's because if
     you don't write programs that accept and emit simple text
     streams, it's much more difficult to hook the programs together.

In other words, if two server pieces are talking, they should either be 
built as a unit (in which case they would be one server piece, from a 
library standpoint), or over a well-defined interface, so that neither 
relies on the other's assumptions about their respective libraries.

Am I missing a pragmatic example that you have in mind?

> On (2): Debian also seems to do a good job of patching security
> holes when fixes become available. It would be harder to do this if
> the hole had to be patched in multiple places.

This is a stronger argument to me, but, provided a robust build and 
dependency environment, not one I fully buy.  That said, I must cede 
this point as I cannot argue it from a place of experience[1]: I have 
not worked with any distro-wide build systems, and there are perhaps 
(many) minutiae where the devil may play.

Thanks for your input!

Kevin

[1] I did say this came from idle speculation!  :-)


More information about the TriLUG mailing list