отсутствует библиотека Qt с wkhtmltopdf в докере на Debian Buster - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть докер-контейнер с запущенным debian buster, и я хочу запустить в нем wkhtmltopdf.У меня есть 2 хост-машины, одинаковые, и на одной и той же сборке контейнера с одним и тем же Dockerfile.Оба работают под управлением одной и той же версии докера.На одной машине wkhtmltopdf работает нормально, но на другой я получаю:

wkhtmltopdf: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

На машине, где она работает:

# ldd /usr/bin/wkhtmltopdf | grep libQt5Core
 libQt5Core.so.5 => /lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f8da6f2f000)

# ls -l /lib/x86_64-linux-gnu/libQt5Core.so.5*
lrwxrwxrwx. 1 root root      19 Dec  4  2017 /lib/x86_64-linux-gnu/libQt5Core.so.5 -> libQt5Core.so.5.9.2
lrwxrwxrwx. 1 root root      19 Dec  4  2017 /lib/x86_64-linux-gnu/libQt5Core.so.5.9 -> libQt5Core.so.5.9.2
-rw-r--r--. 1 root root 5138560 Dec  4  2017 /lib/x86_64-linux-gnu/libQt5Core.so.5.9.2

И на машине, где она не работает:

# ldd /usr/bin/wkhtmltopdf | grep libQt5Core
 libQt5Core.so.5 => not found

# ls -l /lib/x86_64-linux-gnu/libQt5Core.so.5*
lrwxrwxrwx. 1 root root      20 Nov 18 16:36 /lib/x86_64-linux-gnu/libQt5Core.so.5 -> libQt5Core.so.5.11.2
lrwxrwxrwx. 1 root root      20 Nov 18 16:36 /lib/x86_64-linux-gnu/libQt5Core.so.5.11 -> libQt5Core.so.5.11.2
-rw-r--r--. 1 root root 5196040 Nov 18 16:36 /lib/x86_64-linux-gnu/libQt5Core.so.5.11.2

Теперь я не устанавливаю явно Qt - я предполагаю, что он устанавливается как зависимость от wkhtmltopdf.

Вот версии всего, одинаковые на обеих машинах:

Внутренний контейнер:

# cat /etc/debian_version 
buster/sid
# wkhtmltopdf -V          
wkhtmltopdf 0.12.4

Внешний контейнер:

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6 (Maipo)
# docker -v
Docker version 17.06.2-ee-18, build c78b5e1

Кто-нибудь знает, что происходит и как я могу заставить его работать?

Почемуверсия libQt5 отличается?Почему он не находит его на нерабочем компьютере.

Я попытался скопировать и связать libQt5Core.so.5.9 с рабочего компьютера на нерабочий, но это не помогло.

Это действительно раздражает меня.

1 Ответ

0 голосов
/ 28 марта 2019

Проблема заключается в совместимости между разделяемой библиотекой libQt5Core и работающим ядром.Система RHEL, в которой wkhtmltopdf не работает, использует версию ядра старше 3.17.

В контейнере Docker удалите секцию .note.ABI-tag ELF из общей библиотеки, и wkhtmltopdf будет работать:

strip -R .note.ABI-tag /lib64/libQt5Core.so.5.11.3

Инструмент strip, вероятно, не включен в ваш контейнер Docker.Возможно, вам потребуется установить пакет binutils.

...