在Debian Buster的Docker容器中使用wkhtmltopdf时缺少Qt库

4

我有一个运行debian buster的docker容器,我想在其中运行wkhtmltopdf。我有两台主机,都是相同的,都使用相同的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个回答

2
问题是libQt5Core共享库和运行中的内核之间的兼容性问题。在wkhtmltopdf不起作用的RHEL系统上运行的内核版本早于3.17。
在Docker容器中,从共享库中剥离.note.ABI-tag ELF部分,wkhtmltopdf将正常工作:
最初的回答:在RHEL系统上,由于内核版本过低,导致libQt5Core共享库与内核不兼容。在Docker容器中,只需剥离共享库中的.note.ABI-tag ELF部分,就能使wkhtmltopdf正常工作。
strip -R .note.ABI-tag /lib64/libQt5Core.so.5.11.3
< p >“strip”工具可能未包含在您的Docker容器中。您可能需要安装“binutils”软件包。

注:原文中的“Original Answer”应翻译为“最初的回答”。

1
剥离符号会导致任何意外后果吗?在此之后,wkhtmltopdf仍然能够完全正常工作吗? - TheEdgeOfRage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接