<br><br><div class="gmail_quote">On Sun, Mar 15, 2009 at 2:18 PM, Adrian Knoth <span dir="ltr">&lt;<a href="mailto:adi@drcomp.erfurt.thur.de">adi@drcomp.erfurt.thur.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi!<br>
<br>
I&#39;ve just seen<br>
<br>
jackd/<a href="http://configure.ac" target="_blank">configure.ac</a>:<br>
<br>
echo &quot;WARNING: ON ANY DEBIAN-DERIVED DISTRIBUTION (Debian, Ubuntu etc)&quot;<br>
echo &quot;CHANGING THE INSTALLATION PREFIX WILL NOT PRODUCE A WORKING JACK&quot;<br>
echo &quot;INSTALL. Please contact the distribution packager for JACK and&quot;<br>
echo &quot;ask them to fix their packaging.&quot;<br>
echo &quot;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&quot;<br>
exit 1<br>
<br>
<br>
Since jackd is team-maintained in Debian, I feel responsible for this<br>
one.<br>
<br>
What&#39;s wrong with current packaging? (and how do you want it to be<br>
changed?)</blockquote><div><br>Ever since JACK was first packaged on debian, it has been done wrong.<br><br>Somebody decided to added a &quot;library version&quot;  to the installed .so file, so that rather than the used-name of the library file being called <br>
  <br>         $prefix/libjack.so.M.m.n<br><br>it is called<br><br>         $prefix/libjack-0.100.0.so.M.m.n<br><br>libjack.so.0.100.0 is a symlink to the -0.100.0. version, not the other way around.<br><br>Then, all packages of JACK clients on debian (and derived systems) are built so that the client has run-time linkage dependency on libjack-0.100.0 and not on libjack. This was done, it was claimed years ago, &quot;to protect clients from changes in the API&quot;. <br>
<br>First of all, it is not the responsibility of a distribution packager to &quot;protect clients from changes in the API&quot;. Either you do this by consistent packaging, or you can&#39;t do it at all. Secondly, this is not done with (for example) X or NFS, which are about the closest to JACK as examples that have both a library *and* a server and the two must be in sync. Thirdly, this completely ignores standard Unix/Linux/Posix library versioning (the M.m.n part of the names above) which is the correct way to manage library version dependency. The fact that we (the JACK team) set M, m and n and do not change them unless we need to seems to have escaped the entire debian packing project. It has never been clear to me what made the original Debian packagers of JACK think that they needed to or should or even could add their own &quot;versioning&quot; component to the name of the library.<br>
<br>The JACK source tree does not build libjack-0.100.0, and it does not do anything with symlinks. The result is that when a user updates their JACK system (which they generally need to do because Debian is very slow to pick up new versions), they end up with the new library installed as libjack.so.M.m.n, whereas clients are still attempting to link to libjack-0.100.0.so.M.m.n. Since this does not point (in any way) to the new version, clients fail to work.<br>
<br>Preferred solution: drop libjack-&lt;ANYTHING&gt;.so.M.m.n and revert to just libjack.so.M.m.n<br>Weaker but workable solution: make libjack-0.100.0.so.M.m.n a link to libjack.so.M..n rather than the other way around.  Note that &quot;0.100.0&quot; is a meaningless name.<br>
<br>Thanks for asking. This is one of the most common sources of user confusion on the IRC channel #jack and we would surely love to see it fixed after all these years.<br></div><br>--p<br></div><br>