[devel] Пути к разделяемым библиотекам в hasher

Eugine Kosenko eugine.kosenko на gmail.com
Сб Апр 7 11:55:47 MSK 2018


Один и тот же свежесобранный своими руками ghc7.10.1-7.10.1-alt1.rpm
устанавливаю в рабочей системе и в хэшере.

Запускаю в рабочей системе:

$ strace ghc 2>&1|grep haskeline
openat(AT_FDCWD, "/usr/lib64/ghc-7.10.1/bin/../haske_IlDhIe25uAn0WJY379Nu1M/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = 3

Запускаю в хэшере:

# strace ghc 2>&1|grep haskeline
openat(AT_FDCWD, "/lib64/tls/x86_64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/tls/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/tls/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/tls/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/x86_64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/tls/x86_64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/tls/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/tls/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/tls/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/x86_64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/x86_64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
writev(2, [{iov_base="/usr/lib64/ghc-7.10.1/bin/ghc", iov_len=29},
{iov_base=": ", iov_len=2}, {iov_base="error while loading shared
libra"..., iov_len=36}, {iov_base=": ", iov_len=2},
{iov_base="libHShaskeline-0.7.2.1-IlDhIe25u"..., iov_len=58}, {iov_base=":
", iov_len=2}, {iov_base="cannot open shared object file", iov_len=30},
{iov_base=": ", iov_len=2}, {iov_base="No such file or directory",
iov_len=25}, {iov_base="\n", iov_len=1}], 10/usr/lib64/ghc-7.10.1/bin/ghc:
error while loading shared libraries:
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so: cannot open
shared object file: No such file or directory

Получается, что в рабочей системе эта библиотека находится, а в хэшере ---
нет. Притом она и там и там лежит в одном и том же месте:

$ ls /usr/lib64/ghc-7.10.1/haske_IlDhIe25uAn0WJY379Nu1M/lib*
/usr/lib64/ghc-7.10.1/haske_IlDhIe25uAn0WJY379Nu1M/libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M.a
/usr/lib64/ghc-7.10.1/haske_IlDhIe25uAn0WJY379Nu1M/
libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M-ghc7.10.1.so
/usr/lib64/ghc-7.10.1/haske_IlDhIe25uAn0WJY379Nu1M/libHShaskeline-0.7.2.1-IlDhIe25uAn0WJY379Nu1M_p.a

Непонятно, почему в хэшере ищнт не там, где в рабочей системе (и даже не
пытается)? ld.so.conf в обеих средах пустые, шаманство с ручной установкой
LD_LIBRARY_PATH не помогает. Возможно, сама libHShaskeline не может быть
прогружена из-за отсутствия какой-то другой библиотеки (скорее всего,
проблема таки в зависимости, сейчас пытаюсь сгенерировать полный список по
rpmbb -r), но как узнать, какой?

На самом деле все еще хуже. Пакет нормально собирается в рабочей системе,
но не собирается в хэшере из-за аналогичной ошибки --- промежуточный
ghc-pkg не находит libHSterminfo.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20180407/69ae3b4c/attachment-0001.html>


Подробная информация о списке рассылки Devel