While experimenting with snapping a desktop environment I found it doesn’t work on a series that doesn’t match the base. As I’ve learnt more about the way things work (by rewriting rpath) this has seemed increasingly odd and I suspect there’s something going unintentionally wrong.
For reference the snap I’m using is: https://github.com/AlanGriffiths/egmde-snap
Note the first possibly unusual thing about this is it is “base: core18”.
Anyway, the immediate reason why it doesn’t work is:
$ ldd /snap/egmde/x1/bin/egmde | grep "=> /lib"
/snap/core18/current/lib64/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f3060bb2000)
Which naturally doesn’t work on any series except bionic.
On closer examination /snap/core18/current/lib64/ld-linux-x86-64.so.2 is a link:
$ ls -hl /snap/core18/current/lib64/ld-linux-x86-64.so.2
lrwxrwxrwx 1 root root 32 Apr 16 2018 /snap/core18/current/lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.27.so
There’s an obvious difference here if I compare this with core:
$ ls -hl /snap/core/current/lib64/ld-linux-x86-64.so.2
lrwxrwxrwx 1 root root 34 Oct 16 08:35 /snap/core/current/lib64/ld-linux-x86-64.so.2 -> ../lib/x86_64-linux-gnu/ld-2.23.so
Is this difference by design? It would seem that if core18 were similar in this respect to core, then this would enable my snap to work on 16.04 and 18.10?