[csw-maintainers] Shared library placement, take 3
Jonathan Craig
jcraig at opencsw.org
Wed Jul 20 21:07:48 CEST 2011
On Wed, Jul 20, 2011 at 2:06 PM, Peter FELECAN <pfelecan at opencsw.org> wrote:
> need to use different versions on their own systems. As always, look how
> Debian solved the issue.
There are two use cases for this problem:
Unique SONAMEs ) This is the better behaved use case. In this
situation multiple versions of the shared libraries can co-exist in
the same directory. So lets assume we have the app "foo" that
provides "libfoo" and has a version 1 & 2.
package contents dependency
foo1 bin depends on libfoo1
foo2 bin depends on libfoo2
libfoo1 so
libfoo2 so
libfoo1-dev header depends on libfoo1, conflicts libfoo2-dev
libfoo2-dev header depends on libfoo2, conflicts libfoo1-dev
If debug versions of so's then:
libfoo1-dbg debug-so conficts with libfoo1 (and libfoo1 conflicts with it)
This allows multiple bin/so versions to be installed and one version
of the headers. We could extend this with CSWalternatives to allow
switching between header versions but could be confusing if you assume
the version you want is the current version.
Non-Unique SONAMEs) Bad developer, bad. Oh well, the packager must
still deal with it. I'm not sure of an example package like this to
check against my ubuntu catalog. This situation calls for either
making the versions exclusive (using conflicts with) or configuring
them for there own tree. Using alternatives is a risky undertaking
because it will almost always eventually cause grief. If alternatives
puts the .so in a common lib directory and a user builds against it
then changes the alternative choice, whatever they've built will
break.
Ultimately, if the library is well behaved then I do think its best to
place it in a common directory (/opt/csw/lib).
Jon
More information about the maintainers
mailing list