Re: [Svxlink-devel] Installation of different versions
Brought to you by:
sm0svx
From: Tobias B. <sm...@us...> - 2014-08-31 21:39:03
|
On 2014-08-14 10:53, Rob Janssen wrote: > Remember I wrote some time ago about a possible problem occurring when newer versions of > svxlink are installed when a previous version was already there? > I wrote an "uninstall" script that removes all old versions. However, I was not really able to pinpoint > where the real problem was and the trouble we were having at that time was not resolved because > it was caused by a different bug. > > However, now we are finally building our new repeater infrastructure and I was hit by the same problem > again! There was a previous version installed on those systems and I upgraded to the latest development > version. > > To debug things, I tried the same thing at home and this time I first removed the old version, installed > the new version, and *it would not work* claiming that the shared libraries could not be found! > > Now I finally have located the root cause: after installation of the libraries, there is no call to the program > ldconfig. > This is required, it builds a cache for the dynamic loader. It is similar to "registering the .DLL" in Windows. > When you don't do it, things often appear to work just fine, but this particular case (replacing an existing > library by a new version) will fail, because the old library is still in the cache and will continue to be > used. Yes, calling ldconfig is required but I don't think this is a job for "make install". When an application is packaged in a binary package it is the responsibility of the package installation scripts to run ldconfig. You may find it easier to install SvxLink to another location like /opt/svxlink and then set LD_LIBRARY_PATH in the start script to point to the lib-directory. For my systems I usually do not use "make install" at all. I just run everything from within the source tree. CMake also remove the need to set LD_LIBRARY_PATH when running from the source tree since the binaries include the full path to the required libraries. I'll write an instruction some day on how to run without "make install". 73's de SM0SVX / Tobias > When the old library has been removed, it will trigger an error message. But when you just "make install" > a new version over the old one, the old library is still there and the new program will just use the old > library without any message. > Of course this can cause many interesting things to happen... > > Rob |