Raku / user-experience

Identifying issues in and improving the Raku user experience
Artistic License 2.0
25 stars 5 forks source link

Debian sid package won't install correctly on Jessie, due to lib dependencies #27

Closed dmaestro closed 5 years ago

dmaestro commented 6 years ago

I recently installed Debian package rakudo on a pretty clean Debian 8.10 (Jessie) server. At first it would not install because the shared library links needed for third-party modules in MoarVM were not present. These links were supplied by installing the following packages:

Package was installed from the Unstable repository (Sid). sources.list entry as follows: deb http://ftp.us.debian.org/debian sid main

Examples of the missing symlinks:

/usr/lib/x86_64-linux-gnu/libffi.so -> libffi.so.6.0.2
/usr/lib/libtommath.so -> libtommath.so.0.0.42
/usr/lib/x86_64-linux-gnu/libuv.so -> libuv.so.0.10
AlexDaniel commented 6 years ago

Ping @robertlemmen @dod38fr

dod38fr commented 6 years ago

@dmaestro what do you mean by "third-party modules in MoarVM" ?

zoffixznet commented 6 years ago

The third-party libs MoarVM uses: https://github.com/MoarVM/MoarVM/tree/master/3rdparty

However, I believe we have some of our own commits in the forks, so simply installing those libs from repos might not work out.

robertlemmen commented 6 years ago

@dmaestro which rakudo package did you use, from where did you get it? And what version?

A normal package should never directly use the .so links in the -dev package, but the versioned ones.

The moarvm package in sid for example (2018.06+dfsg-1):

root@ec27bb26298c:/# ldd /usr/bin/moar 
        linux-vdso.so.1 (0x00007ffd88dc9000)
        libmoar.so => /usr/lib/moar/libmoar.so (0x00007fa4e90ad000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa4e8cf3000)
        libffi.so.6 => /lib/x86_64-linux-gnu/libffi.so.6 (0x00007fa4e8aea000)
        libtommath.so.1 => /lib/x86_64-linux-gnu/libtommath.so.1 (0x00007fa4e88d0000)
        libuv.so.1 => /lib/x86_64-linux-gnu/libuv.so.1 (0x00007fa4e86a7000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa4e8314000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa4e80f6000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa4e7eee000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa4e7cea000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa4e9bc1000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fa4e7ad2000)
nxadm commented 6 years ago

Package was installed from the Unstable repository (Sid). sources.list entry as follows: deb http://ftp.us.debian.org/debian sid main

robertlemmen commented 6 years ago

weird, what was the version? But it looks like this is fixed in the current version. Please keep testing these, they need it!

dod38fr commented 6 years ago

@dmaestro is probably using the latest or so version. But moar won't start because libuv.so.1 and libtommath.so.1 are not available on Debian Jessie.

I think that the installation of the dev package from Jessie enable ldd to find the missing shared libs through the symlinks. But these libraries are old and I would be surprised that rakudo works correctly with libuv 0.10 and libtommath 0.0.42.

@dmaestro , I can see only these choices:

Hope this helps

robertlemmen commented 6 years ago

I guess you could also try to install libuv and friends from sid as well as rakudo, but it's quite possible that they drag in more and more dependencies...

AlexDaniel commented 6 years ago

Oh, so it's an issue of using debian stable but pulling rakudo package from sid/testing? I'll keep that in mind.

dmaestro commented 6 years ago

Actually debian old-stable (Jessie) and yes, pulling the rakudo package from sid. perl6 was able to start using the libs I had on my system, but I haven't exercised them to see if everything works. I guess I would want to know if installing directly on a clean install of Stretch (current stable) has the same problem or not. I can't easily test that myself. If it installs and tests fine there, then I would be satisfied with just calling Jessie "unsupported"; though that's unfortunate for any of those users ;-)

dmaestro commented 6 years ago

@dod38fr I'm afraid with the rate of development over the last year, using a version of Perl 6 as old as 2016.12 is not a good option; I certainly wouldn't recommend it to anyone. Much prefer a native build of a recent star release, but a debian package that works is of course the best option. The server in question is not intended to have hand-rolled applications on it.

dod38fr commented 6 years ago

@dmaestro libuv1 and libtommath libs have the same major version between stretch and unstable, so moar should find all its shared libs. That said, I don't know if these older libs contain all the symbols required by moar.

All in all, if running on recent rakudo is required. it may be less trouble to run testing on your server. This depends, of course on what is running on your server besides Perl6, but testing seldom breaks provided you pay attention to the messages shown by apt upgrade or apt dist-upgrade.

dmaestro commented 5 years ago

I was able to install on Jessie (oldstable) from testing (Buster) to my satisfaction from the latest 2018.10 rakudo package. Quite a few dependencies were involved, but the second solution offered (which did not upgrade the perl5 package) was as follows:

Accept this solution? [Y/n/q/?] y
The following NEW packages will be installed:
  binutils-common{a} binutils-x86-64-linux-gnu{a} libapparmor1{a} libbinutils{a} 
  libc-l10n{a} libgraph-perl{a} libncursesw6{a} libpath-tiny-perl{a} 
  libpython3.6-minimal{a} libpython3.6-stdlib{a} libreadline7{a} libssl1.1{a} libtinfo6{a} 
  python3.6{a} python3.6-minimal{a} 
The following packages will be REMOVED:
  dh-python{u} libpython3.4-minimal{u} libpython3.4-stdlib{u} python3-apt{a} 
  python3-dbus{a} python3-gi{a} python3-software-properties{a} python3.4{u} 
  python3.4-minimal{u} software-properties-common{a} unattended-upgrades{a} 
The following packages will be upgraded:
  binutils dbus libc-bin libc-dev-bin libc6 libc6-dev libcap-ng0 libdbus-1-3 
  libio-socket-ip-perl libmpdec2 libnih-dbus1 libnih1 libpython3-stdlib locales moarvm nqp 
  python3 python3-minimal rakudo 
The following packages are RECOMMENDED but will NOT be installed:
  libunicode-utf8-perl 
19 packages upgraded, 15 newly installed, 11 to remove and 810 not upgraded.

The installation was automatic using the following sources.list entry:

deb http://ftp.de.debian.org/debian testing main