miércoles, 6 de noviembre de 2013

Scilab en Manjaro opt/scilab-5.4.1/lib/thirdparty/libz.so.1: version `ZLIB_1.2.3.4' not found (required by /usr/lib/libpng16.so.16) - RESUELTO

Bueno la cosa es que despues de instalar la versión binaria del sitio de Scilab, en Manjaro funcionabe muy bien, pero despues de una actualización, scila no funcionaba, entonces abrí la consola y al introducir el script que inicia a Scilab 4.5.1, la consola me enviaba este mensaje
scilab-bin: /home/miguel/opt/scilab-5.4.1/lib/thirdparty/libz.so.1: version `ZLIB_1.2.3.4' not found (required by /usr/lib/libpng16.so.16)

Entonces buscando en la red, en un foro de Gentoo encontré la respuesta entre lineas (http://gentoo.2317880.n4.nabble.com/Error-with-version-of-libraries-with-scilab-td270648.html)
En este foro, se menciona este error es por que los autores de SCILAB están jugando con la LD_LIBRARY_PATH y que mediante el comando
$ ldd /usr/lib64/libpng16.so.16
Se tiene este resultado
        linux-vdso.so.1 (0x00007fff7d79a000)
        libz.so.1 => /lib64/libz.so.1 (0x00007ff9ad6ab000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff9ad3b5000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff9ad00a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff9adb3c000
El autor de la respuesta, menciona que se ve que libpng usa libz, ambas se encuentran en el sistema y que no hace falta usar la libreria que propone el script de scilab. y finalmente menciona lo siguiente: "Go find the startup script for scilab and edit the mods to LD_LIBRARY_PATH to put the scilab directory at the end (not the beginning where it is now) "(Alan McKinnon, 2013) Pues bien siguiendo estas indicaciones, vi el resultado que arrojaba mi libpng y obtuve lo siguiente
[miguel@casita bin]$ ldd /usr/lib64/libpng16.so.16
 
        linux-vdso.so.1 (0x00007fffee13e000)
 libz.so.1 => /usr/lib/libz.so.1 (0x00007f33ab303000)
 libm.so.6 => /usr/lib/libm.so.6 (0x00007f33ab000000)
 libc.so.6 => /usr/lib/libc.so.6 (0x00007f33aac55000)
 /usr/lib64/ld-linux-x86-64.so.2 (0x00007f33ab74f000)
Lo que me indicó que el libpng si está usando el libz pero del sistema
entonces mediante una consola y nano me dediqué a indagar como funciona el script de Scilab 5.4.1, esto me dio como resultado lo siguiente
En estas lineas encontré lo siguiente, aqui se carga la LD_LIBRARY_PATH con $SCIBINARYBASE/lib/thirdparty
if test $IS_SCILAB_BINARY -eq 1; then

    TCL_LIBRARY="$SCIBINARYBASE/thirdparty/tcl8.5"
    Tk_LIBRARY="$SCIBINARYBASE/thirdparty/tk8.5"

    LD_LIBRARY_PATH=$SCIBINARYBASE/lib/scilab:$SCIBINARYBASE/lib/thirdparty${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
    DOCBOOK_ROOT="$SCI/../../thirdparty/docbook"
    PATH="$PATH:$SCI/modules/scicos/"
Entonces, agregamos a la LD_LIBRARY_PATH /usr/lib que es donde el comando ldd dice que está libz
if test $IS_SCILAB_BINARY -eq 1; then

    TCL_LIBRARY="$SCIBINARYBASE/thirdparty/tcl8.5"
    Tk_LIBRARY="$SCIBINARYBASE/thirdparty/tk8.5"

LD_LIBRARY_PATH=/usr/lib64/:$SCIBINARYBASE/lib/scilab:$SCIBINARYBASE/lib/thirdparty${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
    DOCBOOK_ROOT="$SCI/../../thirdparty/docbook"
    PATH="$PATH:$SCI/modules/scicos/"
Una vez hecho esto, Scilab volvió a funcionar