tagger setup portable picard musicbrainz how español brainz linux linker cluster-computing python-2.6 gdal

linux - setup - Cómo corregir un error de búsqueda de símbolos: errores de símbolos indefinidos en un entorno de clúster



musicbrainz picard portable (2)

Después de dos docenas de comentarios para comprender la situación, se encontró que libhdf5.so.7 era en realidad un enlace simbólico (con varios niveles de libhdf5.so.7 indirecto) a un archivo que no se compartía entre los procesos en cola y los procesos interactivos. Esto significa que aunque el enlace simbólico se encuentra en un sistema de archivos compartido, el contenido del archivo no, y como resultado, el proceso estaba viendo diferentes versiones de la biblioteca.

Para referencia futura: además de verificar LD_LIBRARY_PATH , siempre es una buena idea revisar una biblioteca con nm -D para ver si los símbolos realmente existen. En este caso, se encontró que existen en modo interactivo pero no cuando se ejecutan en la cola. Un md5sum rápido reveló que los archivos eran realmente diferentes.

Estoy trabajando en un código de Python que extrae algunos datos de imágenes de un archivo ECW utilizando GDAL ( http://www.gdal.org/ ) y sus enlaces de python. GDAL fue construido desde la fuente para tener soporte de ECW.

El programa se ejecuta en un servidor de clúster que ssh en. He probado el programa a través del terminal ssh y funciona bien. Sin embargo, ahora me gustaría enviar un trabajo al clúster utilizando qsub, pero informa lo siguiente:

Traceback (most recent call last): File "./gdal-test.py", line 5, in <module> from osgeo import gdal File "/home/h3/ctargett/.local/lib/python2.6/site-packages/GDAL-1.11.1-py2.6-linux-x86_64.egg/osgeo/__init__.py", line 21, in <module> _gdal = swig_import_helper() File "/home/h3/ctargett/.local/lib/python2.6/site-packages/GDAL-1.11.1-py2.6-linux-x86_64.egg/osgeo/__init__.py", line 17, in swig_import_helper _mod = imp.load_module(''_gdal'', fp, pathname, description) ImportError: /mnt/aeropix/prgs/.local/lib/libgdal.so.1: undefined symbol: H5Eset_auto2

LD_DEBUG=symbols un poco más e intenté usar los LD_DEBUG=symbols para intentar averiguar dónde estaba la diferencia, pero eso es todo lo que mi conocimiento / comprensión me ha llevado.

Para referencia, esto es lo que sucede con los LD_DEBUG=symbols y la ejecución del código en el terminal ssh (canalizando a través de grep H5Eset_auto2 para reducir parte de la salida):

Salida de depuración del símbolo para el código que se ejecuta en el terminal ssh:

11359: symbol=H5Eset_auto2; lookup in file=/usr/bin/python26 [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libpthread.so.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libdl.so.2 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libutil.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libm.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libc.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/ld-linux-x86-64.so.2 [0] 11359: symbol=H5Eset_auto2; lookup in file=/home/h3/ctargett/.local/lib/python2.6/site-packages/GDAL-1.11.1-py2.6-linux-x86_64.egg/osgeo/_gdal.so [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libgdal.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libstdc++.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libm.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libgcc_s.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libpthread.so.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libc.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libdl.so.2 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libutil.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libhdf5.so.7 [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/bin/python26 [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libpthread.so.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libdl.so.2 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libutil.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libm.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libc.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/ld-linux-x86-64.so.2 [0] 11359: symbol=H5Eset_auto2; lookup in file=/home/h3/ctargett/.local/lib/python2.6/site-packages/GDAL-1.11.1-py2.6-linux-x86_64.egg/osgeo/_gdal.so [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libgdal.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libstdc++.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libm.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libgcc_s.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libpthread.so.0 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libc.so.6 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libdl.so.2 [0] 11359: symbol=H5Eset_auto2; lookup in file=/lib64/libutil.so.1 [0] 11359: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libhdf5.so.7 [0]

Salida de depuración de símbolo para el código enviado usando qsub:

16915: symbol=H5Eset_auto2; lookup in file=/usr/bin/python26 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libpthread.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libdl.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libutil.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libm.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libc.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/ld-linux-x86-64.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/home/h3/ctargett/.local/lib/python2.6/site-packages/GDAL-1.11.1-py2.6-linux-x86_64.egg/osgeo/_gdal.so [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libgdal.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libstdc++.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libm.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libgcc_s.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libpthread.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libc.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libdl.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libutil.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libhdf5.so.7 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libjpeg.so.62 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpng12.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libpq.so.4 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libcurl.so.3 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libgssapi_krb5.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libkrb5.so.3 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libk5crypto.so.3 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libcom_err.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libidn.so.11 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libssl.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libcrypto.so.6 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libNCSEcw.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libNCSEcwC.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libNCSCnet.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libNCSUtil.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/librt.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libxml2.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/mnt/aeropix/prgs/.local/lib/libz.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/ld-linux-x86-64.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libcrypt.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libresolv.so.2 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libnsl.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/usr/lib64/libkrb5support.so.0 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libkeyutils.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libselinux.so.1 [0] 16915: symbol=H5Eset_auto2; lookup in file=/lib64/libsepol.so.1 [0] 16915: /mnt/aeropix/prgs/.local/lib/libgdal.so.1: error: symbol lookup error: undefined symbol: H5Eset_auto2 (fatal) ImportError: /mnt/aeropix/prgs/.local/lib/libgdal.so.1: undefined symbol: H5Eset_auto2

Supongo que no estoy seguro de por qué parece que deja de buscar en libgdal.so.1 cuando se envía usando qsub, cuando sigue apareciendo cuando solo se ejecuta en el terminal. También observo que el trabajo qsub puede localizar correctamente libhdf5.so.7 (que es donde debería encontrar H5Eset_auto2 ) ya que puede encontrar un símbolo diferente, H5Eprint :

16915: symbol=H5Eprint; lookup in file=/usr/lib64/libpython2.6.so.1.0 [0] 16915: symbol=H5Eprint; lookup in file=/mnt/aeropix/prgs/.local/lib/libgdal.so.1 [0] 16915: symbol=H5Eprint; lookup in file=/usr/lib64/libstdc++.so.6 [0] 16915: symbol=H5Eprint; lookup in file=/lib64/libm.so.6 [0] 16915: symbol=H5Eprint; lookup in file=/lib64/libgcc_s.so.1 [0] 16915: symbol=H5Eprint; lookup in file=/lib64/libpthread.so.0 [0] 16915: symbol=H5Eprint; lookup in file=/lib64/libc.so.6 [0] 16915: symbol=H5Eprint; lookup in file=/lib64/libdl.so.2 [0] 16915: symbol=H5Eprint; lookup in file=/lib64/libutil.so.1 [0] 16915: symbol=H5Eprint; lookup in file=/mnt/aeropix/prgs/.local/lib/libhdf5.so.7 [0]

Cualquier sugerencia sobre esto sería increíblemente útil en esta etapa (espero que sea suficiente información; estoy más que feliz de proporcionar más información; simplemente no estoy seguro de qué otra cosa podría ser útil en esta etapa).

EDITAR:

Parece que los contenidos de /usr/bin son diferentes para los trabajos enviados usando qsub ( qsub específicamente libtool ). Esto está siendo investigado.


yum update

me ayudó Después tuve

wget: symbol lookup error: wget: undefined symbol: psl_latest