In trying to run MakeMKV under an Ubuntu Focal systemd-nspawn container (on a CentOS 7 host), I got the following error::
ImportError: libQt5Core.so.5: cannot open shared object file: No such file or directory
Which was extremely perplexing, because the library existed on the system::
root@makemkv:~# ls -lah /usr/lib/x86_64-linux-gnu/libQt5Core.so.5*
lrwxrwxrwx 1 root root 20 Apr 9 02:57 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 -> libQt5Core.so.5.12.8
lrwxrwxrwx 1 root root 20 Apr 9 02:57 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12 -> libQt5Core.so.5.12.8
-rw-r--r-- 1 root root 5.3M Jul 30 17:32 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8
I confirmed that the /usr/lib/x86_64-linux-gnu/ directory was part of the shared library search path::
root@makemkv:~# cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
root@makemkv:~# cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf
# Multiarch support
/usr/local/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Fortunately, I was able to find this Ask Ubuntu question, Ubuntu 18.4 libQt5Core.so.5: cannot open shared object file: No such file or directory, which gives the following explanation and solution:
The kernel needs to be at least 3.15 for a very real but (to me)
esoteric reason: "Qt 5.10 uses the renameat2 system call which
is only available since kernel 3.15". If you want to read a very
long thread, look here:
https://bbs.archlinux.org/viewtopic.php?id=232682
...
sudo strip --remove-section=.note.ABI-tag /usr/lib64/libQt5Core.so.5
The above command "strips out" a piece of code which is looking
in the kernel for something not there, and allows the module to
load.
For my particular case, the exact command was::
# strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5