При попытке запустить evince Ubuntu 12.04 отвечает мне:
% evince
evince: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
С другой стороны ldd
сообщает об отсутствии проблем.
% ldd /usr/bin/evince
linux-vdso.so.1 => (0x00007fffa15ff000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f57bdb04000)
libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f57bd8ea000)
libevdocument3.so.4 => /usr/lib/libevdocument3.so.4 (0x00007f57bd6b5000)
...
Я предполагаю, что должна быть проблема с загрузкой общих библиотек. libSM
- только первая. Просьба к Ubuntu быть более многословным не принесла мне никакой идеи.
% export LD_DEBUG=all
% evince
6574:
6574: file=libSM.so.6 [0]; needed by evince [0]
6574: find library=libSM.so.6 [0]; searching
6574: search cache=/etc/ld.so.cache <----- why not found?
6574: search path=/lib/x86_64-linux-gnu/tls/x86_64:/lib/x86_64-linux-gnu/tls:/lib/x86_64-linux-gnu/x86_64:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls/x86_64:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu/x86_64:/usr/lib/x86_64-linux-gnu:/lib/tls/x86_64:/lib/tls:/lib/x86_64:/lib:/usr/lib/tls/x86_64:/usr/lib/tls:/usr/lib/x86_64:/usr/lib (system search path)
6574: trying file=/lib/x86_64-linux-gnu/tls/x86_64/libSM.so.6
6574: trying file=/lib/x86_64-linux-gnu/tls/libSM.so.6
6574: trying file=/lib/x86_64-linux-gnu/x86_64/libSM.so.6
6574: trying file=/lib/x86_64-linux-gnu/libSM.so.6
6574: trying file=/usr/lib/x86_64-linux-gnu/tls/x86_64/libSM.so.6
6574: trying file=/usr/lib/x86_64-linux-gnu/tls/libSM.so.6
6574: trying file=/usr/lib/x86_64-linux-gnu/x86_64/libSM.so.6
6574: trying file=/usr/lib/x86_64-linux-gnu/libSM.so.6 <----- why it fails?
6574: trying file=/lib/tls/x86_64/libSM.so.6
6574: trying file=/lib/tls/libSM.so.6
6574: trying file=/lib/x86_64/libSM.so.6
6574: trying file=/lib/libSM.so.6
6574: trying file=/usr/lib/tls/x86_64/libSM.so.6
6574: trying file=/usr/lib/tls/libSM.so.6
6574: trying file=/usr/lib/x86_64/libSM.so.6
6574: trying file=/usr/lib/libSM.so.6
6574:
evince: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
Но
% unset LD_DEBUG
% ls -l /usr/lib/x86_64-linux-gnu/libSM.so.6
lrwxrwxrwx 1 root root 14 lip 25 2012 /usr/lib/x86_64-linux-gnu/libSM.so.6 -> libSM.so.6.0.1
% ls -l /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
-rw-r--r-- 1 root root 30888 mar 2 2012 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
Проблема возникает только с evince. Другие программы работают безупречно.
Регенерация /etc/ld.so.cache
ничего не меняет.
% ldconfig
% ls -l /etc/ld.so.cache
-rw-r--r-- 1 root root 84443 lis 6 17:17 /etc/ld.so.cache
% evince
evince: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
gv
также зависит от libSM
и работает без проблем. Сравним
% gv
6605:
6605: file=libXaw3d.so.6 [0]; needed by gv [0]
6605: find library=libXaw3d.so.6 [0]; searching
6605: search cache=/etc/ld.so.cache
6605: trying file=/usr/lib/x86_64-linux-gnu/libXaw3d.so.6
6605:
6605: file=libXaw3d.so.6 [0]; generating link map
6605: dynamic: 0x00007f1b68327b88 base: 0x00007f1b680d5000 size: 0x000000000025e560
6605: entry: 0x00007f1b680ea9e0 phdr: 0x00007f1b680d5040 phnum: 7
6605:
...
6605: file=libSM.so.6 [0]; needed by /usr/lib/x86_64-linux-gnu/libXt.so.6 [0]
6605: find library=libSM.so.6 [0]; searching
6605: search cache=/etc/ld.so.cache
6605: trying file=/usr/lib/x86_64-linux-gnu/libSM.so.6
6605:
6605: file=libSM.so.6 [0]; generating link map
6605: dynamic: 0x00007f1b66e4fdb8 base: 0x00007f1b66c49000 size: 0x0000000000207158
6605: entry: 0x00007f1b66c4ab20 phdr: 0x00007f1b66c49040 phnum: 7
6605:
...
Здесь загрузчик находит запись в своем кэше.
Мы можем воспроизвести эту проблему в системе 12.04 с
/usr/lib
символической ссылкой (от ext4, смонтированной /
) до /usr1/lib
(ext3, смонтированной /usr1
)
Перемещение /usr1/lib
в /usr
исправляет проблему.
Это происходит только с evince, а не с другими программами, такими как gv
, использующими libSM
. На оригинальном плакате также были разделенные монтируемые / изменяющиеся файловые системы?