在Debian Buster上的docker中缺少带有wkhtmltopdf的Qt库

时间:2019-02-07 21:49:49

标签: docker qt5 redhat wkhtmltopdf debian-buster

我有一个运行debian buster的docker容器,我想在其中运行wkhtmltopdf。我有2台主机,两者都相同,都运行具有相同Dockerfile的相同容器。两者都运行相同版本的docker。在一台机器上,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

任何人都知道发生了什么,如何使它正常工作?

libQt5Core的版本为何不同?为什么在无法运行的计算机上找不到它。

我确实尝试将libQt5Core.so.5.9从工作机复制并链接到不工作的机,但这并不能解决问题。

这真让我很烦。

1 个答案:

答案 0 :(得分:0)

问题是libQt5Core共享库和正在运行的内核之间存在兼容性问题。无法运行wkhtmltopdf的RHEL系统运行的内核版本早于3.17。

在Docker容器中,从共享库中删除import matplotlib.pyplot as plt import numpy as np #function computes some functions import function as fct tab=np.linspace(0.,1.,500) ftab=fct.p(tab) plt.plot(tab,ftab) mypath=../.../Report myimage='Image.png' plt.savefig(mypath + image,bbox_inches=tight) plt.show() ELF部分,然后wkhtmltopdf将起作用:

.note.ABI-tag

strip -R .note.ABI-tag /lib64/libQt5Core.so.5.11.3 工具可能未包含在您的Docker容器中。您可能需要安装strip软件包。