Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing symlink in container image created using singularity pull #795

Closed
chrisgorgo opened this issue Jul 6, 2017 · 21 comments
Closed
Labels

Comments

@chrisgorgo
Copy link

Originally reported in nipreps/mriqc#567 by @mgxd

Version of Singularity:

2.3

Expected behavior

After doing singularity pull or singularity exec on docker://poldracklab/mriqc:0.9.6 the symlink

/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 -> libGL.so.1.2.0

should be present in the container image (as it is in the original Docker container image as well as Singularity container image created using docker2singularity)

Actual behavior

The symlink is missing.

Steps to reproduce behavior

singularity pull or singularity exec on docker://poldracklab/mriqc:0.9.6 (please not you might need to manually specify image size of >14Gb when doing singularity pull).

@gmkurtzer
Copy link
Contributor

This seems to be working for me:

$ singularity exec docker://poldracklab/mriqc:0.9.6 ls -l /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
Docker image path: index.docker.io/poldracklab/mriqc:0.9.6
Cache folder set to /home/gmk/.singularity/docker
Creating container runtime...
lrwxrwxrwx 1 gmk gmk 14 Jan 26 00:17 /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 -> libGL.so.1.2.0

What is the current status?

@mgxd
Copy link

mgxd commented Jul 10, 2017

@gmkurtzer after trying with 2.3.1, the symlink is present using your command

@mgxd
Copy link

mgxd commented Jul 10, 2017

However, still encountering the same error when actually running the pipeline

RuntimeError: Command:
3dSkullStrip -input /mnt/workdir/mathias/qa_workdir2/workflow_enumerator/anatMRIQCT2w/AFNISkullStripWorkflow/_in_file_..mnt..data..sub-BANDA002..anat..sub-BANDA002_T2w.nii.gz/skullstrip/sub-BANDA002_T2w_conformed_corrected.nii.gz -prefix sub-BANDA002_T2w_conformed_corrected_skullstrip.nii.gz
Standard output:
3dSkullStrip: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

for the record, this is command that is being called

singularity exec -B $base:/mnt docker://poldracklab/mriqc:latest mriqc --participant_label $subj --verbose-reports --n_procs 10 --mem_gb 10 -w $WORKDIR $DATADIR $OUTDIR participant

@chrisgorgo
Copy link
Author

Does the symlink resolve to the right file? Are all the env variables (LD_LIBRARY_PATH for example) present?

@mgxd
Copy link

mgxd commented Jul 10, 2017

docker2singularity

mathiasg@openmind7:~$ ls -l /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
lrwxrwxrwx 1 root root 14 Jan 26 00:17 /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 -> libGL.so.1.2.0
mathiasg@openmind7:~$ ls -l /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 
-rw-r--r-- 1 root root 471680 Jan 26 00:17 /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
mathiasg@openmind7:~$ $LD_LIBRARY_PATH 
bash: /usr/lib/fsl/5.0:: No such file or directory

singularity pull

Singularity mriqc:latest:~> ls -l /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
lrwxrwxrwx 1 mathiasg gablab 14 Jan 26 00:17 /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 -> libGL.so.1.2.0
Singularity mriqc:latest:~> ls -l /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 
-rw-r--r-- 1 mathiasg gablab 471680 Jan 26 00:17 /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
Singularity mriqc:latest:~> $LD_LIBRARY_PATH 
bash: /usr/lib/fsl/5.0::/.singularity.d/libs: No such file or directory

@chrisgorgo
Copy link
Author

So maybe the missing symlink was not causing your original problem. The permissions of the relevant files seem to be correct. Could you show the outputs of ldd run on the 3dSkullStrip binary for the two images?

@mgxd
Copy link

mgxd commented Jul 10, 2017

@chrisfilo hmm, it isn't found.

  • d2s
mathiasg@openmind7:~$ ldd /usr/lib/afni/bin/3dSkullStrip
	linux-vdso.so.1 =>  (0x00007fff3d3fe000)
	libXm.so.4 => /usr/lib/x86_64-linux-gnu/libXm.so.4 (0x00002b0adda3a000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00002b0addf03000)
	libSUMA.so => /usr/lib/afni/lib/libSUMA.so (0x00002b0ade20c000)
	libglut.so.3 => /usr/lib/x86_64-linux-gnu/libglut.so.3 (0x00002b0aded93000)
	libmri.so => /usr/lib/afni/lib/libmri.so (0x00002b0adefdb000)
	libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00002b0adfc3c000)
	libvolpack.so.1 => /usr/lib/x86_64-linux-gnu/libvolpack.so.1 (0x00002b0adfea5000)
	libnetcdf.so.11 => /usr/lib/x86_64-linux-gnu/libnetcdf.so.11 (0x00002b0ae00eb000)
	libf2c.so.2 => /usr/lib/x86_64-linux-gnu/libf2c.so.2 (0x00002b0ae344e000)
	libgiftiio.so.0 => /usr/lib/libgiftiio.so.0 (0x00002b0ae366b000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00002b0ae388b000)
	libniftiio.so.2 => /usr/lib/libniftiio.so.2 (0x00002b0ae3ab4000)
	libznz.so.2 => /usr/lib/libznz.so.2 (0x00002b0ae3cd6000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00002b0ae3eda000)
	libnifticdf.so.2 => /usr/lib/libnifticdf.so.2 (0x00002b0ae40f4000)
	libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00002b0ae4311000)
	libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00002b0ae4519000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00002b0ae4733000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00002b0ae4a6d000)
	libXmHTML.so.1.1 => /usr/lib/x86_64-linux-gnu/libXmHTML.so.1.1 (0x00002b0ae4c7f000)
	libgts-0.7.so.5 => /usr/lib/x86_64-linux-gnu/libgts-0.7.so.5 (0x00002b0ae4efc000)
	libgsl.so.19 => /usr/lib/x86_64-linux-gnu/libgsl.so.19 (0x00002b0ae5159000)
	libgslcblas.so.0 => /usr/lib/x86_64-linux-gnu/libgslcblas.so.0 (0x00002b0ae5598000)
	libGLw.so.1 => /usr/lib/x86_64-linux-gnu/libGLw.so.1 (0x00002b0ae57d6000)
	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00002b0ae59dd000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00002b0ae5bff000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00002b0ae5e1c000)
	libXmu.so.6 => /usr/lib/x86_64-linux-gnu/libXmu.so.6 (0x00002b0ae61e5000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00002b0ae63fe000)
	libXft.so.2 => /usr/lib/x86_64-linux-gnu/libXft.so.2 (0x00002b0ae6641000)
	libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00002b0ae6856000)
	libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00002b0ae6aaf000)
	/lib64/ld-linux-x86-64.so.2 (0x00002b0add812000)
	libGLU.so.1 => /usr/lib/x86_64-linux-gnu/libGLU.so.1 (0x00002b0ae6cd4000)
	libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00002b0ae6f43000)
	libtracktools.so => /usr/lib/afni/lib/libtracktools.so (0x00002b0ae71b7000)
	lib3DEdge.so => /usr/lib/afni/lib/lib3DEdge.so (0x00002b0ae73e4000)
	libsegtools.so => /usr/lib/afni/lib/libsegtools.so (0x00002b0ae75f9000)
	libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00002b0ae780e000)
	libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00002b0ae7a1e000)
	libhdf5_serial_hl.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10 (0x00002b0ae7c24000)
	libhdf5_serial.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10 (0x00002b0ae7e44000)
	libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00002b0ae82e1000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00002b0ae854e000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00002b0ae8753000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00002b0ae8975000)
	libXpm.so.4 => /usr/lib/x86_64-linux-gnu/libXpm.so.4 (0x00002b0ae8b79000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00002b0ae8d8b000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00002b0ae909c000)
	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00002b0ae9346000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00002b0ae9550000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00002b0ae98d2000)
	libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00002b0ae9ae8000)
	libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00002b0ae9ceb000)
	libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00002b0ae9eee000)
	libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00002b0aea0f5000)
	libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00002b0aea2f8000)
	libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00002b0aea527000)
	libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00002b0aea72a000)
	libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00002b0aea930000)
	libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00002b0aeab32000)
	libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00002b0aead4b000)
	libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00002b0aeaf50000)
	libsz.so.2 => /usr/lib/x86_64-linux-gnu/libsz.so.2 (0x00002b0aeb15f000)
	libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00002b0aeb362000)
	librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00002b0aeb595000)
	libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00002b0aeb7b1000)
	libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00002b0aeb9e7000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00002b0aebd17000)
	liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00002b0aebf61000)
	libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00002b0aec170000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00002b0aec3c1000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00002b0aec5c5000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00002b0aec7cb000)
	libaec.so.0 => /usr/lib/x86_64-linux-gnu/libaec.so.0 (0x00002b0aeca3b000)
	libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00002b0aecc43000)
	libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00002b0aece76000)
	libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00002b0aed0f6000)
	libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00002b0aed35a000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00002b0aed56d000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00002b0aed83f000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00002b0aeda6e000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00002b0aedc72000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00002b0aede7d000)
	libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00002b0aee098000)
	libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00002b0aee2b3000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00002b0aee4f4000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00002b0aee6fc000)
	libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00002b0aee900000)
	libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00002b0aeeb09000)
	libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00002b0aeed93000)
	libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00002b0aef035000)
	libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00002b0aef268000)
	libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00002b0aef47e000)
	libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00002b0aef6a7000)
	libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00002b0aef8b6000)
	libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00002b0aefb01000)
	libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00002b0aefdd6000)

s pull

Singularity mriqc:latest:~> ldd /usr/lib/afni/bin/3dSkullStrip
	linux-vdso.so.1 =>  (0x00007fffd8975000)
	libXm.so.4 => /usr/lib/x86_64-linux-gnu/libXm.so.4 (0x00002b82e510c000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00002b82e55d5000)
	libSUMA.so => /usr/lib/afni/lib/libSUMA.so (0x00002b82e58de000)
	libglut.so.3 => /usr/lib/x86_64-linux-gnu/libglut.so.3 (0x00002b82e6465000)
	libmri.so => /usr/lib/afni/lib/libmri.so (0x00002b82e66ad000)
	libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00002b82e730e000)
	libvolpack.so.1 => /usr/lib/x86_64-linux-gnu/libvolpack.so.1 (0x00002b82e7577000)
	libnetcdf.so.11 => /usr/lib/x86_64-linux-gnu/libnetcdf.so.11 (0x00002b82e77bd000)
	libf2c.so.2 => /usr/lib/x86_64-linux-gnu/libf2c.so.2 (0x00002b82eab20000)
	libgiftiio.so.0 => /usr/lib/libgiftiio.so.0 (0x00002b82ead3d000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00002b82eaf5d000)
	libniftiio.so.2 => /usr/lib/libniftiio.so.2 (0x00002b82eb186000)
	libznz.so.2 => /usr/lib/libznz.so.2 (0x00002b82eb3a8000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00002b82eb5ac000)
	libnifticdf.so.2 => /usr/lib/libnifticdf.so.2 (0x00002b82eb7c6000)
	libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00002b82eb9e3000)
	libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00002b82ebbeb000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00002b82ebe05000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00002b82ec13f000)
	libXmHTML.so.1.1 => /usr/lib/x86_64-linux-gnu/libXmHTML.so.1.1 (0x00002b82ec351000)
	libgts-0.7.so.5 => /usr/lib/x86_64-linux-gnu/libgts-0.7.so.5 (0x00002b82ec5ce000)
	libgsl.so.19 => /usr/lib/x86_64-linux-gnu/libgsl.so.19 (0x00002b82ec82b000)
	libgslcblas.so.0 => /usr/lib/x86_64-linux-gnu/libgslcblas.so.0 (0x00002b82ecc6a000)
	libGLw.so.1 => /usr/lib/x86_64-linux-gnu/libGLw.so.1 (0x00002b82ecea8000)
	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00002b82ed0af000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00002b82ed2d1000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00002b82ed4ee000)
	libXmu.so.6 => /usr/lib/x86_64-linux-gnu/libXmu.so.6 (0x00002b82ed8b7000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00002b82edad0000)
	libXft.so.2 => /usr/lib/x86_64-linux-gnu/libXft.so.2 (0x00002b82edd13000)
	libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00002b82edf28000)
	libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00002b82ee181000)
	/lib64/ld-linux-x86-64.so.2 (0x00002b82e4ee4000)
	libGLU.so.1 => /usr/lib/x86_64-linux-gnu/libGLU.so.1 (0x00002b82ee3a6000)
	libGL.so.1 => not found
	libtracktools.so => /usr/lib/afni/lib/libtracktools.so (0x00002b82ee615000)
	lib3DEdge.so => /usr/lib/afni/lib/lib3DEdge.so (0x00002b82ee842000)
	libsegtools.so => /usr/lib/afni/lib/libsegtools.so (0x00002b82eea57000)
	libGL.so.1 => not found
	libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00002b82eec6c000)
	libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00002b82eee7c000)
	libhdf5_serial_hl.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10 (0x00002b82ef082000)
	libhdf5_serial.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10 (0x00002b82ef2a2000)
	libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00002b82ef73f000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00002b82ef9ac000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00002b82efbb1000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00002b82efdd3000)
	libXpm.so.4 => /usr/lib/x86_64-linux-gnu/libXpm.so.4 (0x00002b82effd7000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00002b82f01e9000)
	libGL.so.1 => not found
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00002b82f04fa000)
	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00002b82f07a4000)
	libGL.so.1 => not found
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00002b82f09ae000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00002b82f0d30000)
	libsz.so.2 => /usr/lib/x86_64-linux-gnu/libsz.so.2 (0x00002b82f0f46000)
	libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00002b82f1149000)
	librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00002b82f137c000)
	libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00002b82f1598000)
	libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00002b82f17ce000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00002b82f1afe000)
	liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00002b82f1d48000)
	libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00002b82f1f57000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00002b82f21a8000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00002b82f23ac000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00002b82f25b2000)
	libaec.so.0 => /usr/lib/x86_64-linux-gnu/libaec.so.0 (0x00002b82f2822000)
	libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00002b82f2a2a000)
	libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00002b82f2c5d000)
	libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00002b82f2edd000)
	libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00002b82f3141000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00002b82f3354000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00002b82f3626000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00002b82f3855000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00002b82f3a59000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00002b82f3c64000)
	libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00002b82f3e7f000)
	libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00002b82f409a000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00002b82f42db000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00002b82f44e3000)
	libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00002b82f46e7000)
	libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00002b82f48f0000)
	libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00002b82f4b7a000)
	libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00002b82f4e1c000)
	libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00002b82f504f000)
	libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00002b82f5265000)
	libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00002b82f548e000)
	libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00002b82f569d000)
	libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00002b82f58e8000)
	libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00002b82f5bbd000)

@jmstover
Copy link
Contributor

jmstover commented Jul 10, 2017 via email

@chrisgorgo
Copy link
Author

chrisgorgo commented Jul 10, 2017 via email

@mgxd
Copy link

mgxd commented Jul 10, 2017

@jmstover looks like both images' /etc/ld.sof.conf point to the lib

Singularity pull

Singularity mriqc:latest:~> cat  /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

Singularity mriqc:latest:~> cat  /etc/ld.so.conf.d/*.conf
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa-egl
/usr/lib/x86_64-linux-gnu/mesa

Docker2Singularity

mathiasg@openmind7:voice$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

mathiasg@openmind7:voice$ cat /etc/ld.so.conf.d/*.conf
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa-egl
/usr/lib/x86_64-linux-gnu/mesa

@jmstover
Copy link
Contributor

Can you try adding in a explicit call to ldconfig in your def file at the end when you're done? It's probably like @chrisfilo mentioned, and it's not being ran when the image is still writable.

Or... maybe not, you're calling directly to docker://poldracklab/mriqc:latest aren't you... As a test, what if you add /usr/lib/x86_64-linux-gnu/mesa to your environment LD_LIBRARY_CONFIG before you try running the command?

-J

@mgxd
Copy link

mgxd commented Jul 10, 2017

Yes, I'm pulling mriqc:latest - I still encountered the same error when just trying

LD_LIBRARY_CONFIG=/usr/lib/x86_64-linux-gnu/mesa:$LD_LIBRARY_CONFIG

but, if I explicitly call ldconfig before running mriqc, the library is found! Thanks for the help!

EDIT: I'm running this command

singularity exec -B $base:/mnt docker://poldracklab/mriqc:latest bash -c 'ldconfig && mriqc --participant_label $0 --verbose-reports --n_procs 10 --mem_gb 10 -w $1 $2 $3 participant' $subj $WORKDIR $DATADIR $OUTDIR

@jmstover
Copy link
Contributor

@vsoch Would it be easy to add in on a docker:// URI to call ldconfig after the import steps?

-J

@chrisgorgo
Copy link
Author

Ok - we will add it to our dockerfiles.

If there is a guide for building docker images that should work with singularity this tip should be added to it.

@gmkurtzer you can close this issue whenever you feel like it (don't want to cut off the ongoing discussion).

@vsoch
Copy link
Collaborator

vsoch commented Jul 10, 2017

@jmstover I think as @chrisfilo suggested this would be best done in the Dockerfile. And +1 @chrisfilo we should have a "best practices" page for Docker images intended for singularity - i'll get on that soon. If you have any other things you've learned please post them here. And @gmkurtzer yes feel free to close when you have reviewed all points.

@chrisgorgo
Copy link
Author

chrisgorgo commented Jul 10, 2017 via email

@vsoch
Copy link
Collaborator

vsoch commented Jul 10, 2017

Singularity importing from Docker, to make it possible for userspace, cannot do more than dumping layers.
I would consider a call to ldconfig more of an installation step, reasonable to do in a Dockerfile, not so reasonable to do in userspace without being an admin. I also think adding something on the side of Singularity is akin to hardcoding a very specific solution to a very particular problem, and given that it's easily fixed on your end, I'm not convinced it should be added to Singularity.

@vsoch
Copy link
Collaborator

vsoch commented Jul 10, 2017

ok here ya go! Let us know if you have more for the (currently tiny) list : http://singularity.lbl.gov/docs-docker#best-practices

@justbennet
Copy link

I did not find this issue, or a related issue at nipreps/mriqc#567, so I created nipreps/mriqc#648

I just added a comment to the latter with a lot of output and three test scenarios.

I believe the issue is that a specific path to the library is hard coded into the 3dSkullStrip binary, and if it is missing, the error occurs. It does not try to resolve that library with a reference to an external library.

If that is true, I have no idea why the Docker image runs without modification and the Singularity version does not, but perhaps narrowing the problem helps?

@justbennet
Copy link

I created a Singularity container using

Bootstrap: docker
From: ubuntu:xenial-20161213

%post
apt-get update
apt-get install -y --no-install-recommends \
    curl \
    bzip2 \
    ca-certificates \
    xvfb  \
    cython3 \
    build-essential \
    autoconf \
    libtool \
    pkg-config

which is the base from which the fmriqc is made. When it builds, it prints this message

Setting up libgl1-mesa-glx:amd64 (17.0.7-0ubuntu0.16.04.1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode

and the resulting image has only these libGL libraries

Singularity xenial.simg:~/Projects> find /usr/lib/x86_64-linux-gnu -name libGL\*
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0

Not the /usr/lib/x86_64-linux-gnu/libGL.so.1 that seems to be hard-coded into the 3dSkullStrip binary.

@dtrudg
Copy link
Contributor

dtrudg commented Jan 3, 2020

This should now be fixed (the original issue on the 0.9.6 version of the mriqc container) with the new docker layer extraction method (umoci) that is in use on 3.5.

singularity shell mriqc_0.9.6.sif 
Singularity> ldd /usr/lib/afni/bin/3dSkullStrip
	linux-vdso.so.1 =>  (0x00007ffd943af000)
	libXm.so.4 => /usr/lib/x86_64-linux-gnu/libXm.so.4 (0x00007f9673ddf000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9673ad6000)
	libSUMA.so => /usr/lib/afni/lib/libSUMA.so (0x00007f9672f4f000)
	libglut.so.3 => /usr/lib/x86_64-linux-gnu/libglut.so.3 (0x00007f9672d07000)
	libmri.so => /usr/lib/afni/lib/libmri.so (0x00007f96720a6000)
	libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007f9671e3d000)
	libvolpack.so.1 => /usr/lib/x86_64-linux-gnu/libvolpack.so.1 (0x00007f9671bf7000)
	libnetcdf.so.11 => /usr/lib/x86_64-linux-gnu/libnetcdf.so.11 (0x00007f966e894000)
	libf2c.so.2 => /usr/lib/x86_64-linux-gnu/libf2c.so.2 (0x00007f966e677000)
	libgiftiio.so.0 => /usr/lib/libgiftiio.so.0 (0x00007f966e457000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f966e22e000)
	libniftiio.so.2 => /usr/lib/libniftiio.so.2 (0x00007f966e00c000)
	libznz.so.2 => /usr/lib/libznz.so.2 (0x00007f966de08000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f966dbee000)
	libnifticdf.so.2 => /usr/lib/libnifticdf.so.2 (0x00007f966d9d1000)
	libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f966d7c9000)
	libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f966d5af000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f966d275000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f966d063000)
	libXmHTML.so.1.1 => /usr/lib/x86_64-linux-gnu/libXmHTML.so.1.1 (0x00007f966cde6000)
	libgts-0.7.so.5 => /usr/lib/x86_64-linux-gnu/libgts-0.7.so.5 (0x00007f966cb89000)
	libgsl.so.19 => /usr/lib/x86_64-linux-gnu/libgsl.so.19 (0x00007f966c74a000)
	libgslcblas.so.0 => /usr/lib/x86_64-linux-gnu/libgslcblas.so.0 (0x00007f966c50c000)
	libGLw.so.1 => /usr/lib/x86_64-linux-gnu/libGLw.so.1 (0x00007f966c305000)
	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f966c0e3000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f966bec6000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f966bafd000)
	libXmu.so.6 => /usr/lib/x86_64-linux-gnu/libXmu.so.6 (0x00007f966b8e4000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f966b6a1000)
	libXft.so.2 => /usr/lib/x86_64-linux-gnu/libXft.so.2 (0x00007f966b48c000)
	libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f966b233000)
	libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f966b00e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f96742a8000)
	libGLU.so.1 => /usr/lib/x86_64-linux-gnu/libGLU.so.1 (0x00007f966ad9f000)
	libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f966ab2b000)
	libtracktools.so => /usr/lib/afni/lib/libtracktools.so (0x00007f966a8fe000)
	lib3DEdge.so => /usr/lib/afni/lib/lib3DEdge.so (0x00007f966a6e9000)
	libsegtools.so => /usr/lib/afni/lib/libsegtools.so (0x00007f966a4d4000)
	libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f966a2c4000)
	libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f966a0be000)
	libhdf5_serial_hl.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10 (0x00007f9669e9e000)
	libhdf5_serial.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10 (0x00007f9669a01000)
	libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007f9669794000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f966958f000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f966936d000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9669169000)
	libXpm.so.4 => /usr/lib/x86_64-linux-gnu/libXpm.so.4 (0x00007f9668f57000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f9668c46000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f966899c000)
	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f9668792000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9668410000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f96681fa000)
	libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007f9667ff7000)
	libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007f9667df4000)
	libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f9667bed000)
	libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007f96679ea000)
	libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f96677bb000)
	libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f96675b8000)
	libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f96673b2000)
	libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f96671b0000)
	libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f9666f97000)
	libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f9666d92000)
	libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f9666b83000)
	libsz.so.2 => /usr/lib/x86_64-linux-gnu/libsz.so.2 (0x00007f9666980000)
	libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007f966674d000)
	librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f9666531000)
	libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f96662fb000)
	libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f9665fcb000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f9665d81000)
	liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f9665b72000)
	libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f9665921000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f966571d000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f9665517000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f96652a7000)
	libaec.so.0 => /usr/lib/x86_64-linux-gnu/libaec.so.0 (0x00007f966509f000)
	libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f9664e6c000)
	libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f9664bec000)
	libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f9664988000)
	libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f9664775000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f96644a3000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f9664274000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f9664070000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f9663e65000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f9663c4a000)
	libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f9663a2f000)
	libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f96637ee000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f96635e6000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f96633e2000)
	libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f96631d9000)
	libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f9662f4f000)
	libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f9662cad000)
	libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f9662a7a000)
	libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f9662864000)
	libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f966263b000)
	libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f966242c000)
	libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f96621e1000)
	libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f9661f0c000)
	libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f9661cd4000)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants