From: Ivan Zakharyaschev <imz@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] Пути к разделяемым библиотекам в hasher Date: Sat, 7 Apr 2018 12:47:37 +0300 (MSK) Message-ID: <alpine.LFD.2.20.1804071236220.3504@imap.altlinux.org> (raw) In-Reply-To: <CAB_XSX0j643FhJeT6TDHbOPkD_jJtFtiM84C8y9Xi_51qnZE_g@mail.gmail.com> [-- Attachment #1: Type: text/plain, Size: 6587 bytes --] On Sat, 7 Apr 2018, Eugine Kosenko wrote: > Один и тот же свежесобранный своими руками 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) Это может быть связано с тем, что не смонтирван /proc, а там в RPATH/RUNPATH в этих elf-ах используется $ORIGIN (см man ld-linux.so). Чтобы узнать место, где выполняемый elf лежал, ld-linux как-то там смотрит в /proc/ , иначе работает так, как будто бы в текущей директории надо искать (и далее по стандартным путям). Натыкались на такое с glebfm@ при bootstrap-е пакета ghc на новой платформе (mips*). Такая же фигня есть в java (в т.ч closure), из-за этого при сборке обязательно приходится /proc монтировать. (Это до недавнего времени для меня было загадкой, почему какие-то java-библиотеки не находились в hasher, а так всё работало. Теперь с уверенностью догадываюсь.) > 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. >
next parent reply other threads:[~2018-04-07 9:47 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-07 9:47 ` Ivan Zakharyaschev [this message] 2018-04-07 11:47 ` Ivan Zakharyaschev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=alpine.LFD.2.20.1804071236220.3504@imap.altlinux.org \ --to=imz@altlinux.org \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git