Bug#773424: vtk6 has the wrong library paths for vt libraries; using full paths to dlopen instead of library names
Ansgar Burchardt
ansgar at debian.org
Sun Dec 28 20:08:50 UTC 2014
Hi,
Don Armstrong <don at debian.org> writes:
> $ echo 'package require vtk'|vtk6
> couldn't load file "/usr/lib/libvtkCommonCoreTCL-6.1.so":
> /usr/lib/libvtkCommonCoreTCL-6.1.so: cannot open shared object file:
> No such file or directory
[...]
> I suspect that something is giving a full path to dlopen instead of a
> library name, and fixing that will solve this problem.
I think the problem is in /usr/lib/tcltk/vtk-6.1/pkgIndex.tcl:
+---
| namespace eval ::vtk::init {
| proc load_library_package {libName libPath {libPrefix {lib}}} {
| #first try to load a static package, then try the shared package.
| if {[catch "load {} $libName"]} {
| set libExt [info sharedlibextension]
| set currentDirectory [pwd]
| set libFile [file join $libPath "$libPrefix$libName-6.1$libExt"]
| if {[catch "cd {$libPath}; load {$libFile}" errorMessage]} {
+---
So load_library_package is looking in a specific location for the shared
libraries, and later:
+---
| ::vtk::init::load_library_package {vtk${kit}TCL} {[file dirname [file dirname [file dirname [info script]]]]}
+---
I assume `[info script]' refers to /usr/lib/tcltk/vtk-6.1/pkgIndex.tcl,
so this should look in /usr/lib and not the correct (multi-arch)
location.
As an alternative to changing this and if lib*TCL-6.1.so are not used
otherwise, one could move the shared objects out of the multi-arch
location to /usr/lib and into the tcl-vtk6 package.
Ansgar
More information about the debian-science-maintainers
mailing list