* bug#36276: Not found .so files in bundle made by guix pack
@ 2019-06-18 10:07 Andréas Livet
2019-06-18 13:51 ` Ludovic Courtès
0 siblings, 1 reply; 12+ messages in thread
From: Andréas Livet @ 2019-06-18 10:07 UTC (permalink / raw)
To: 36276
Hi,
I try to bundle scribus with guix pack in order to install it on a
centos system on which admin sys doesn't want us to install guix.
So I created a tarball with a symlink to '/usr/bin' (don't know it's
really the recommanded way), this way scribus binary will automatically
be in the $PATH.
Here is how I created the bundle :
guix pack -S /usr/bin=bin scribus
I tried it on my Xubuntu 18.04 system and it worked like a charm.
But, when deployed on the centos machine, it did not found
"libQt5Core.so.5" depsite the file exists.
ldd
/gnu/store/5xqmac50axcgc8vrrn30jvzndjvrqd6a-scribus-1.5.4/bin/.scribus-real
| grep Qt
libQt5Xml.so.5 =>
/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib/libQt5Xml.so.5
(0x00007f60dd9f6000)
libQt5Network.so.5 =>
/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib/libQt5Network.so.5
(0x00007f60dd7a4000)
libQt5OpenGL.so.5 =>
/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib/libQt5OpenGL.so.5
(0x00007f60dd99a000)
libQt5PrintSupport.so.5 =>
/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib/libQt5PrintSupport.so.5
(0x00007f60dd72b000)
libQt5Widgets.so.5 =>
/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib/libQt5Widgets.so.5
(0x00007f60da93b000)
libQt5Gui.so.5 =>
/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib/libQt5Gui.so.5
(0x00007f60da3a6000)
libQt5Core.so.5 => not found
I don't understand why it founds libQt5Gui.so.5 and not libQt5Core.so.5
which is in the same directory !
I tried to copy the .so inside the bin directory, to add qbase lib path
to $LD_LIBRARY_PATH, doesn't seem to work.
Can't find any further information on guix manual, so I'm asking here.
Thanks in advance for your help,
Andréas
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-18 10:07 bug#36276: Not found .so files in bundle made by guix pack Andréas Livet
@ 2019-06-18 13:51 ` Ludovic Courtès
2019-06-18 20:21 ` Andréas Livet
0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2019-06-18 13:51 UTC (permalink / raw)
To: Andréas Livet; +Cc: 36276
Hi,
Andréas Livet <andreas@livet.me> skribis:
> Here is how I created the bundle :
>
> guix pack -S /usr/bin=bin scribus
>
> I tried it on my Xubuntu 18.04 system and it worked like a charm.
You might want to pass -RR to get a relocatable binary. :-)
> But, when deployed on the centos machine, it did not found
> "libQt5Core.so.5" depsite the file exists.
>
> ldd
> /gnu/store/5xqmac50axcgc8vrrn30jvzndjvrqd6a-scribus-1.5.4/bin/.scribus-real
> | grep Qt
[...]
> libQt5Core.so.5 => not found
>
Could you make sure that LD_LIBRARY_PATH is unset?
HTH,
Ludo’.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-18 13:51 ` Ludovic Courtès
@ 2019-06-18 20:21 ` Andréas Livet
2019-06-19 11:05 ` Andréas Livet
2019-06-19 15:51 ` Ludovic Courtès
0 siblings, 2 replies; 12+ messages in thread
From: Andréas Livet @ 2019-06-18 20:21 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 36276
Hi Ludo,
> You might want to pass -RR to get a relocatable binary. :-)
Yes, I'm uploading the new tarball on the server, it's a bit slow...
I didn't understand what did -RR option at first, but now it's seems to
be a good (maybe the only?) option for installation outside the /
directory (which is not a problem for me because I have root privilege
on the server, just that admin sys doesn't want us to install tools like
Docker, guix, etc. because he'll have to maintain the server after) .
> Could you make sure that LD_LIBRARY_PATH is unset?
Yes it is unset. This problem is driving me crazy, I can't understand
why it can find libQt5Gui.so.5 and not libQt5Core.so.5
As far as I understand how dynamic linking is done under linux, the
binary looks for .so files that it depends on inside folders define in
the binary itself and on the operating system (/lib, /lib64).
And when it founds an .so with the corresponding name it stops, then
search for another .so (if there is one).
Then how can it not found this .so file ?
* I've check it with sha1sum, it's clean.
* I check it with "nm -D" it contains all the symbols.
* I've check the binary with "chrpath -l
/gnu/store/5xqmac50axcgc8vrrn30jvzndjvrqd6a-scribus-1.5.4/bin/.scribus-real",
it contains
"/gnu/store/890yw9i7lcjnnxhlza8r121352xpb1hi-qtbase-5.11.3/lib" which
contains libQt5Core.so.5
I really can't see what's the problem here... Hope it will work with the
tarball generated with -RR, but it will leave the problem unsolved...
Again, thanks for your help and what you're doing for guix,
Andréas
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-18 20:21 ` Andréas Livet
@ 2019-06-19 11:05 ` Andréas Livet
2019-06-19 15:51 ` Ludovic Courtès
1 sibling, 0 replies; 12+ messages in thread
From: Andréas Livet @ 2019-06-19 11:05 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 36276
Hi,
I still got the problem with a pack build with -RR, I started to think
about a centos bug...
If you have any ideas, let me know.
Andréas
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-18 20:21 ` Andréas Livet
2019-06-19 11:05 ` Andréas Livet
@ 2019-06-19 15:51 ` Ludovic Courtès
2019-06-20 18:25 ` Andréas Livet
1 sibling, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2019-06-19 15:51 UTC (permalink / raw)
To: Andréas Livet; +Cc: 36276
Hi,
Andréas Livet <andreas@livet.me> skribis:
>> You might want to pass -RR to get a relocatable binary. :-)
>
> Yes, I'm uploading the new tarball on the server, it's a bit slow...
>
> I didn't understand what did -RR option at first, but now it's seems
> to be a good (maybe the only?) option for installation outside the /
> directory
Yes.
<https://www.gnu.org/software/guix/blog/2018/tarballs-the-ultimate-container-image-format/>
explains ‘-R’, and
<https://www.gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/>
mentions ‘-RR’.
>> Could you make sure that LD_LIBRARY_PATH is unset?
>
> Yes it is unset. This problem is driving me crazy, I can't understand
> why it can find libQt5Gui.so.5 and not libQt5Core.so.5
Is there a /etc/ld.so.preload file?
Did you try running the pack on another non-Guix machine?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-19 15:51 ` Ludovic Courtès
@ 2019-06-20 18:25 ` Andréas Livet
2019-06-21 14:47 ` Ludovic Courtès
0 siblings, 1 reply; 12+ messages in thread
From: Andréas Livet @ 2019-06-20 18:25 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 36276
Hi,
> <https://www.gnu.org/software/guix/blog/2018/tarballs-the-ultimate-container-image-format/>
> explains ‘-R’, and
> <https://www.gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/>
> mentions ‘-RR’.
Thanks for the documentation :)
> Is there a /etc/ld.so.preload file?
No. Only some very simples ld.so.config in /etc/ld.so.conf.d
> Did you try running the pack on another non-Guix machine?
I tried yesterday I works as expected on a Xubuntu 16.04 machine without
guix installed on it.
Don't have much time to investigate on it.
For information, it's a CentOS 7.6.1810 server which I did not configure
from the beginning, so I don't know precisely which changes has been
made on it...
I think, maybe there is a conflict of another libQt5Core (not 5)
installed on the machine ?
Anyway, thanks for your help,
Andréas
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-20 18:25 ` Andréas Livet
@ 2019-06-21 14:47 ` Ludovic Courtès
2019-06-24 16:10 ` Andréas Livet
0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2019-06-21 14:47 UTC (permalink / raw)
To: Andréas Livet; +Cc: 36276
Hello,
Andréas Livet <andreas@livet.me> skribis:
>> Is there a /etc/ld.so.preload file?
> No. Only some very simples ld.so.config in /etc/ld.so.conf.d
Hmm, can you try temporarily moving them out of the way to see if it
makes a difference?
AFAICS only /etc/ld.so.preload is accessed, but who knows.
> For information, it's a CentOS 7.6.1810 server which I did not
> configure from the beginning, so I don't know precisely which changes
> has been made on it...
>
> I think, maybe there is a conflict of another libQt5Core (not 5)
> installed on the machine ?
That could be the case, but only if there’s LD_LIBRARY_PATH,
ld.so.preload, or something like that interfering.
What if you run:
env -i …/bin/scribus
where you replace “…” with the full file name of your extracted pack?
HTH,
Ludo’.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-21 14:47 ` Ludovic Courtès
@ 2019-06-24 16:10 ` Andréas Livet
2019-06-24 19:19 ` Ludovic Courtès
0 siblings, 1 reply; 12+ messages in thread
From: Andréas Livet @ 2019-06-24 16:10 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 36276
Hi !
Found a solution !
https://superuser.com/a/1348051
Don't really understand why I got this problem which seems to be WSL only...
Do you think it is related to guix pack in some way ?
Thank you,
Andréas
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-24 16:10 ` Andréas Livet
@ 2019-06-24 19:19 ` Ludovic Courtès
2019-06-25 8:38 ` Andréas Livet
0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2019-06-24 19:19 UTC (permalink / raw)
To: Andréas Livet; +Cc: 36276
Hello,
Andréas Livet <andreas@livet.me> skribis:
> Found a solution !
>
> https://superuser.com/a/1348051
Good! So you ran:
strip --remove-section=.note.ABI-tag \
./gnu/store/…/lib/libQt5Core.so.5
right?
Indeed the .so file produced by Guix has this section:
--8<---------------cut here---------------start------------->8---
$ file -L /gnu/store/y1nlilwa34wqvmvmraggwv12jfdp0kya-qtbase-5.11.3/lib/libQt5Core.so
/gnu/store/y1nlilwa34wqvmvmraggwv12jfdp0kya-qtbase-5.11.3/lib/libQt5Core.so: ELF 64-bit LSB pie executable x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2, for GNU/Linux 3.16.0, stripped
--8<---------------cut here---------------end--------------->8---
… which reflects in the “for GNU/Linux 3.16.0” that we see above.
What does “uname -r” return on this CentOS machine? I’m guessing it’s
older than 3.16.0.
The effect of the ‘strip’ command is that libQt5Base.so can be loaded,
but some functionality maybe missing (things that use the ‘renameat2’
system call specifically; see below.)
> Do you think it is related to guix pack in some way ?
I researched it a bit and in qtbase, in
‘src/corelib/global/minimum-linux_p.h’, we can see this:
--8<---------------cut here---------------start------------->8---
#if QT_CONFIG(getentropy)
# define MINLINUX_MAJOR 3
# define MINLINUX_MINOR 17
# define MINLINUX_PATCH 0
#elif QT_CONFIG(renameat2)
# define MINLINUX_MAJOR 3
# define MINLINUX_MINOR 16
# define MINLINUX_PATCH 0
#else
# define MINLINUX_MAJOR 2
# define MINLINUX_MINOR 6
# define MINLINUX_PATCH 28
#endif
--8<---------------cut here---------------end--------------->8---
Since we build Qt with ‘renameat2’ support, Qt effectively requires a
Linux kernel >= 3.16.0.
We could build it without that requirement; 3.16.0 is already rather
old, so I’m not sure we should do it.
Thoughts?
(Note that the Guix package already has a patch to allow it to work with
kernels < 4.11.)
Ludo’.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-24 19:19 ` Ludovic Courtès
@ 2019-06-25 8:38 ` Andréas Livet
2019-06-25 11:34 ` Ricardo Wurmus
2019-06-25 14:06 ` Ludovic Courtès
0 siblings, 2 replies; 12+ messages in thread
From: Andréas Livet @ 2019-06-25 8:38 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 36276
Hello,
> Good! So you ran:
>
> strip --remove-section=.note.ABI-tag \
> ./gnu/store/…/lib/libQt5Core.so.5
>
> right?
Yes exactly :).
>
> Indeed the .so file produced by Guix has this section:
>
> --8<---------------cut here---------------start------------->8---
> $ file -L /gnu/store/y1nlilwa34wqvmvmraggwv12jfdp0kya-qtbase-5.11.3/lib/libQt5Core.so
> /gnu/store/y1nlilwa34wqvmvmraggwv12jfdp0kya-qtbase-5.11.3/lib/libQt5Core.so: ELF 64-bit LSB pie executable x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2, for GNU/Linux 3.16.0, stripped
> --8<---------------cut here---------------end--------------->8---
>
> … which reflects in the “for GNU/Linux 3.16.0” that we see above.
>
> What does “uname -r” return on this CentOS machine? I’m guessing it’s
> older than 3.16.0.
> 3.10.0-957.12.2.el7.x86_64
What a shame, this kernel was release in 2013 !
I start to think that our VM was not installed properly because regular
centos install seems to have a much more recent kernel...
> The effect of the ‘strip’ command is that libQt5Base.so can be loaded,
> but some functionality maybe missing (things that use the ‘renameat2’
> system call specifically; see below.)
>
>> Do you think it is related to guix pack in some way ?
> I researched it a bit and in qtbase, in
> ‘src/corelib/global/minimum-linux_p.h’, we can see this:
>
> --8<---------------cut here---------------start------------->8---
> #if QT_CONFIG(getentropy)
> # define MINLINUX_MAJOR 3
> # define MINLINUX_MINOR 17
> # define MINLINUX_PATCH 0
> #elif QT_CONFIG(renameat2)
> # define MINLINUX_MAJOR 3
> # define MINLINUX_MINOR 16
> # define MINLINUX_PATCH 0
> #else
> # define MINLINUX_MAJOR 2
> # define MINLINUX_MINOR 6
> # define MINLINUX_PATCH 28
> #endif
> --8<---------------cut here---------------end--------------->8---
Well done :D, I didn't have time to investigated as far as you did.
> Since we build Qt with ‘renameat2’ support, Qt effectively requires a
> Linux kernel >= 3.16.0.
>
> We could build it without that requirement; 3.16.0 is already rather
> old, so I’m not sure we should do it.
>
> Thoughts?
IMHO, don't bother, as you say 3.16.0 is already very old so it's OK to
let it this way.
Maybe it could be worth to mention in guix pack manual that bundle may
not always works on too old kernel ?
Difficult to be precise because it'll depends on projects, don't really
know how to write it down in a way it'll help people to understand
problems like this one.
Thanks again for your hard work,
Andréas
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-25 8:38 ` Andréas Livet
@ 2019-06-25 11:34 ` Ricardo Wurmus
2019-06-25 14:06 ` Ludovic Courtès
1 sibling, 0 replies; 12+ messages in thread
From: Ricardo Wurmus @ 2019-06-25 11:34 UTC (permalink / raw)
To: Andréas Livet; +Cc: 36276
Hi Andréas,
>> What does “uname -r” return on this CentOS machine? I’m guessing it’s
>> older than 3.16.0.
>> 3.10.0-957.12.2.el7.x86_64
>
> What a shame, this kernel was release in 2013 !
>
> I start to think that our VM was not installed properly because
> regular centos install seems to have a much more recent kernel...
I’m afraid not. This is the kernel version on an arbitrary node running
CentOS 7.4.1708: 3.10.0-693.21.1.el7.x86_64
RHEL 7.x won’t ever include any kernel version higher than 3.10.0.
Until it goes EOL they’ll merely backport fixes and sometimes APIs to
what they call 3.10.0, but which won’t be anywhere close to what a
vanilla 3.10.0 kernel provides.
The same happened on RHEL 6, which still provides what they call 2.6.32,
which is nothing like vanilla 2.6.32.
Sometimes that heavily patched kernel will include an interface that
later versions introduced and thus the kernel version checks will be
inaccurate. We had this problem with the RHEL 6 kernel and the GNU C
library, which is why we patched the glibc to make an exception for
Linux version 2.6.32 (which only in its RHEL 6 variant provides the
required interfaces).
--
Ricardo
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#36276: Not found .so files in bundle made by guix pack
2019-06-25 8:38 ` Andréas Livet
2019-06-25 11:34 ` Ricardo Wurmus
@ 2019-06-25 14:06 ` Ludovic Courtès
1 sibling, 0 replies; 12+ messages in thread
From: Ludovic Courtès @ 2019-06-25 14:06 UTC (permalink / raw)
To: Andréas Livet; +Cc: 36276
Hello,
Andréas Livet <andreas@livet.me> skribis:
>> What does “uname -r” return on this CentOS machine? I’m guessing it’s
>> older than 3.16.0.
>> 3.10.0-957.12.2.el7.x86_64
>
> What a shame, this kernel was release in 2013 !
Yeah.
>> ‘src/corelib/global/minimum-linux_p.h’, we can see this:
>>
>> --8<---------------cut here---------------start------------->8---
>> #if QT_CONFIG(getentropy)
>> # define MINLINUX_MAJOR 3
>> # define MINLINUX_MINOR 17
>> # define MINLINUX_PATCH 0
>> #elif QT_CONFIG(renameat2)
>> # define MINLINUX_MAJOR 3
>> # define MINLINUX_MINOR 16
>> # define MINLINUX_PATCH 0
>> #else
>> # define MINLINUX_MAJOR 2
>> # define MINLINUX_MINOR 6
>> # define MINLINUX_PATCH 28
>> #endif
>> --8<---------------cut here---------------end--------------->8---
>
> Well done :D, I didn't have time to investigated as far as you did.
I didn’t “have” the time, I took it. :-)
> IMHO, don't bother, as you say 3.16.0 is already very old so it's OK
> to let it this way.
Sounds good.
> Maybe it could be worth to mention in guix pack manual that bundle may
> not always works on too old kernel ?
>
> Difficult to be precise because it'll depends on projects, don't
> really know how to write it down in a way it'll help people to
> understand problems like this one.
Yes, it’s a bit hard to document it because it’ll vary from package to
package, and the vast majority of packages don’t care about the kernel
version.
Anyway, thanks for your report, and I hope you can find a suitable
workaround!
Ludo’.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2019-06-25 14:07 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-18 10:07 bug#36276: Not found .so files in bundle made by guix pack Andréas Livet
2019-06-18 13:51 ` Ludovic Courtès
2019-06-18 20:21 ` Andréas Livet
2019-06-19 11:05 ` Andréas Livet
2019-06-19 15:51 ` Ludovic Courtès
2019-06-20 18:25 ` Andréas Livet
2019-06-21 14:47 ` Ludovic Courtès
2019-06-24 16:10 ` Andréas Livet
2019-06-24 19:19 ` Ludovic Courtès
2019-06-25 8:38 ` Andréas Livet
2019-06-25 11:34 ` Ricardo Wurmus
2019-06-25 14:06 ` Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).