On Mon, 12 May 2008, Shane Voss wrote:

John Summerfield wrote:
<snip>
>  Am I missing something?
> > Shane
>
 This?
        package require Tclx


Sorry John, I've either missed something else or you need to use more words.

On my system, I have installed   tclx  using the above named RPM.
I can see that it has installed /usr/lib/tclx8.4/libtclx8.4.so but when I then try to run an executable which has been built against it, it fails to load because that file can't be found.

If I tweak my system or my environment I can make it work. My question is shouldn't a well behaved RPM do that for me?

Code using the tclsh/wish interpretter should just need to ask for the tclx to be loaded using the package require magic.

Recent versions of tclx are implemented as a tcl extension and the loading of any shared libraries (as needed) happens when the tcl interpretter pulls in the tclx package.

If a binary is explictly linked against libtclx (part of the requirements for some embeded tcl/tclx stuff perhaps) then it almost certainly wasn't compiled against *this* version of tcl/tclx - so all bets are probably off and who can tell if it will work.

In earlier versions of sl (3,4 anyway) the tclx (8.3.x) package was rather more complicated because it essentially was a complete additional tcl system (and it provided the the /usr/bin/tcl, /usr/bin/wishx commands etc). With sl5 the tcl is the newer 8.4 release so tclx no longer needs to implement so much itself... Also note that many features from tclx have migrated over to standard tcl over the years so the code might not actually need tclx any more.

See http://wiki.tcl.tk/207 for a bit more info about tclx history.

What binaries do you have that explicitly link against libtclx? Where were they built? What does ldd show them as requesting? Maybe the app just needs rebuilding, or if it dates from before tcl-8.4 it might need a bit more work first.

So why does the tclx rpm run ldconfig in %post etc? I don't know for sure but just *maybe* that is to cope with an upgrade from the older tclx which did put libtclx etc into %{_libdir} (/usr/lib{,64}/ as appropriate).

--
Jon Peatfield,  Computer Officer,  DAMTP,  University of Cambridge
Mail:  [EMAIL PROTECTED]     Web:  http://www.damtp.cam.ac.uk/

Reply via email to