著者: T.J. Duchene 日付: To: dng 題目: Re: [DNG] leveldb support proposal
On 2016-03-02 16:20, Rainer Weikusat wrote: >
> The soname mechanism already provides an opportunity for having multiple
> version of the same library installed as these cane use different
> sonames but provide the same set of symbols. In addition to this, the
> symbols themselves can be versioned which enables a single library to
> provide different versions of a function with the same name, eg
>
Yes. All true.
Libraries are installed and then linked using sonames that are symlinked
rather than using the full soname. This is the proper way, so that you
don't have to recompile and re-link every single time when a minor
update is made. The full length sonames aren't used on a day-to-day
basis. It is possible that a short form (symlinked) soname can get
re-pointed from the distributions chosen version to whatever version was
installed last. It's a human oversight, but it can cause problems with
the linker.
That is what I was referring to when I made my earlier comment about the
linker becoming "confused." It's not a correct answer in programming
terms, but it is a very human one.
If you are going to say that installing and linking correctly are the
responsibility of the person trying to install an extra library, you
would be absolutely correct. The problem that I have observed is that
installation of additional versions of software are NOT done correctly
the majority of the time. I would contend that package managers should
account for use cases where more than one version is requested, or at
the very least check the integrity of the system and issue a warning
when something has been changed without a proper diversion.
There is an almost universal assumption by the package manager that only
one version of a given piece of software or a single dependency chain is
ever going to be used in a single install. That assumption is part of
the reason why Devuan exists.