Infrastructure vs. Interface

Christopher James Halse Rogers chalserogers at
Thu Jul 2 22:21:53 UTC 2009

On Thu, 2009-07-02 at 13:40 -0500, Patrick Goetz wrote:
> One area where I agree that there is considerable room for improvement 
> and something that would have to be fixed in order for your idea to work 
> is package dependencies. Currently most people use stuff like debhelper 
> to build packages, which means AFAIK that dependencies are set against 
> the currently installed packages on the machine on which the package is 
> being built, which usually translates into dependencies that are 
> stricter than they need to be.  In the Real World(tm) I often find 
> myself working on a project where I must have feature X in application 
> Z, which is only available in version N+1, while version N is available 
> in the installed distro.  No problem; I go to the package pool for 
> distro-newer, grab version N+1 of application Z and try to dpkg -i it, 
> only to be told something like "unmet dependencies:  this program 
> requires libncurses_5.7.1.2 and you only have libncurses_5.7.1.1 
> installed."  For reals?  Sorry, I'm skeptical.  Of course I can download 
> the source package and use dpkg-buildpackage, but at this point you lose 
> about 90%+ of whatever users were still left trying to solve their 
> problem in a somewhat sane fashion.

The premise here is inaccurate: packages don't pick up versioned library
dependencies based on the installed version.  The observation is
accurate, though - the versions can be unnecessarily strict.  

The versioned library dependency information is taken from the shlibs
file provided by the library package.  This is meant to have the version
bumped each time new interfaces are added - otherwise the dependency
would be incorrect.  This is unnecessarily strict, in that if the
application doesn't link to any of these new interfaces it still gets a
versioned dependency against the most recent package that added

dpkg has fairly recently grown a different dependency mechanism, based
on versioning the actual ABI symbols; that allows less conservative
versioning of dependencies while still providing correct dependencies.
This still requires manual work, and isn't mandatory, so not all
libraries are going to use symbol files anytime soon.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <>

More information about the Ubuntu-devel-discuss mailing list