In article <bcch1e$eqe$1 at oravannahka.helsinki.fi>, Michael Jeltsch
<markku.jeltsch at helsinki.fi> wrote:
> After installing the Staden package, I noticed that licq (ICQ for Linux)
> and bluefish (an html editor) don't work anymore. When I removed the two
> lines from my .bash_profile file
>> export STADENROOT=/usr/local/staden_linux_2003.0b1
> . $STADENROOT/staden.profile
>> (and logged out/in again) everything worked fine again. Apparently these
> two lines make other applications first look into Staden's linux-bin
> directory when looking for certain libraries, whereas they should look
> first in /usr/lib. A question to Linux-Experts: how should I handle
> this? The library file referred to by Staden and e.g. licq
> (libstdc++.so.5) have not the same version numbers (the libstdc++.so.5
> licq 1.2.3.-5 is using is libstdc++.so-5.0.3, whereas staden uses
> libstdc++.so.5.0.1). Should I delete the library files in Staden's
> linux-bin directory and create a symbolic link to the corresponding
> library in /usr/lib? Or should I modify the two lines in .bash_profile
> that first all applications look into /usr/lib before they look in
> Staden's linux-bin directory (and how would I do that?) I fear that
> whatever I do, I might break one or the other application because of the
> different library versions used by the different programs. Obviously
> licq doesn't manage with the older library that Staden is using and e.g.
> bluefish doesn't manage with another newer library Staden is using...
> Thanks in advance for suggestions!
You're concern with libstdc++ versions is not likely to be relevant here.
The Staden package is based on tcl/tk (and itcl/itk) and is distributed
with several shared object (.so) libraries of its own, the tcl/tk being
release 8.4 and itcl being 3.3 (this is for Staden 2002). The script
file that is run everytime you log in, '$STADENROOT/staden.profile',
sets (or resets) the environment variable 'LD_LIBRARY_PATH' to point to
the Staden-supplied libraries (in additional to any preexisting ones).
'LD_LIBRARY_PATH', a relic from older unix-type OSs, is not necessarily
present in a linux installation because linux uses a different (and in
my opinion a far smarter system), configured by 'ldconfig', using the
file '/etc/ld.so.conf'. However, 'LD_LIBRARY_PATH' is recognized and
used, if found, even in linux. Type 'echo $LD_LIBRARY_PATH' in a shell
and see if anything comes back. Then navigate to the Staden installation
point (I, like you, use the traditional 'usr/local' tree but I have it
in 'usr/local/bin/Staden_2002'). In the first level of the subdirectory
you'll find the file 'staden.profile' (a shell script that you can edit
in any text editor). Open this file and in about the middle there are
lines that are concerned with setting 'LD_LIBRARY_PATH'. If you found
that 'LD_LIBRARY_PATH' is defined in your environment (above) you may be
able to sort out the conflicts you are seeing by modifying the line that
appends "$LD_LIBRARY_PATH" to the end so that "$LD_LIBRARY_PATH" instead
precedes the Staden entry (just cut and paste but watch where the colon
(":") goes.)
I don't use either 'bluefish' or 'licq' and never install them but it
would be useful to see the results of 'ldd bluefish' and 'ldd licq'
(you'll have to navigate to I assume 'usr/bin' to do this). I'm guessing
that 'bluefish' and 'licq' are also tcl apps and you're encountering a
library conflict. If not, the listing of the shared libraries that 'ldd'
gives will narrow down the conflict. If you look in the subdirectory
'lib' in the Staden subdirectory there is another subdirectory, probably
'linux-binaries' (it's 'solaris-binaries' on a Sun running Solaris)
where you will find all of the shared libraries that come with Staden.
One or more of these is causing the problems with 'bluefish' and 'licq'
because those libraries are being found first, before the libraries that
'bluefish' and 'licq' were originally built against.
You are also using the beta Staden 2003 release and there may be
complications caused by that as well. Unless you really plan on helping
to debug and refine Staden you would probably be wiser to stick to the
stable, mature release Staden 2002. Provided that you have the tcl/tk
library versions 8.4 and itcl 3.3 installed on your system it is more
likely that Staden will work properly with those standard libraries than
that 'bluefish' or 'licq' will work with the Staden supplied libraries,
even if they have the same version number.
As a last note, I put the two Staden configuration lines (that you give
in your post) at the end of every user's '.bashrc' rather than
'bash_profile' files. I can't recall why I did that but it works fine
and may help you sort out your conflicts.
Dave
--
David F. Spencer, PhD
Dept. of Biochemistry and Molecular Biology
Dalhousie University
Halifax, Nova Scotia, Canada
DSpencer at Dal.CA