运行wkhtmltopdf时出错 - (加载共享库时出错)

时间:2011-02-17 22:39:03

标签: ruby-on-rails pdf-generation wkhtmltopdf

当我的应用程序运行时(或从命令行运行时)wkhtmltopdf命令我收到以下错误:(从命令行显示)

#> wkhtmltopdf 
wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory

我注意到lib确实在/usr/lib文件夹中,但不在/lib文件夹中。它们中的哪一个是否重要?有没有办法让它识别它?

#> ls -l /usr/lib/libXrender.so*
lrwxrwxrwx 1 root root    19 Feb 17 07:20 /usr/lib/libXrender.so -> libXrender.so.1.3.0
lrwxrwxrwx 1 root root    19 Feb 17 07:20 /usr/lib/libXrender.so.1 -> libXrender.so.1.3.0
-rwxr-xr-x 1 root root 39184 Jan 29  2010 /usr/lib/libXrender.so.1.3.0

#> ls -l /lib/libXrender.so*
ls: cannot access /lib/libXrender.so*: No such file or directory

我还检查了lib

的依赖关系
# ldd /usr/lib/libXrender.so.1
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00002b9cb5afd000)
    libc.so.6 => /lib/libc.so.6 (0x00002b9cb5e04000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00002b9cb6143000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00002b9cb6347000)
    libdl.so.2 => /lib/libdl.so.2 (0x00002b9cb654d000)
    /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)

这是在EngineYard gentoo服务器上运行的

12 个答案:

答案 0 :(得分:114)

Unix软件包x11-libs / libXext和x11-libs / libXrender是依赖项

Gentoo的:

sudo emerge libXext libXrender

PDFkit wiki还更详细地解释了如何让wkhtmltopdf在引擎码上工作。   PDFkit wiki

Debian或Ubuntu:

sudo apt-get install libxrender1

希望这有帮助

答案 1 :(得分:32)

我在Debian Squeeze上遇到了同样的问题,amd64。安装libxrender1解决了我的问题。

sudo apt-get install libxrender1

答案 2 :(得分:29)

我还需要做以下事情:

sudo apt-get install libfontconfig1

答案 3 :(得分:8)

今天在运行w static version wkhtmltopdf的RHEL7计算机上进入今天。解决方案是安装一些依赖项:

yum install libXrender libXext fontconfig 

答案 4 :(得分:4)

我遇到了完全相同的问题!对我来说,解决方案是安装64位版本的wkhtmltoimage。

答案 5 :(得分:4)

如果您的系统是64位,并且您的软件需要32位库,则需要添加标志" i386",

例如在ubuntu上:

sudo apt-get install libxrender1:i386

答案 6 :(得分:3)

使用Ubuntu 16(来自全新的Docker安装):

apt install -y libxrender1 libxext6

答案 7 :(得分:3)

来自this

我通过安装解决了该问题

wkhtmltopdf

sudo apt-get install wkhtmltopdf.

希望它会有所帮助:)

答案 8 :(得分:1)

  

sudo apt-get install xvfb

安装依赖包。

更新node-modules wkhtmltopdf index.js

  

wkhtmltopdf.command =' wkhtmltopdf&#39 ;;到' wkhtmltopdf.command =   ' xvfb-run wkhtmltopdf';'

答案 9 :(得分:0)

请注意,有一个以UPX压缩格式分发的wkhtmltopdf的可执行版本,ldd和file都会报告该文件是静态链接的,即使有效负载需要共享库。

要检查尝试

字符串| fgrep UPX

如果你看到任何" UPX" id字符串然后安装upx并使用" upx -d"在文件的副本上(作为upx工作)然后在未压缩的文件上运行ldd。

答案 10 :(得分:0)

在Ubuntu 18.04生产服务器上运行Rails 5.2应用程序时,我遇到了同样的问题,问题是服务器上缺少libXrender的依赖项

这是我的解决方法

运行以下命令以搜索缺少的依赖项:

sudo apt-cache search libXrender

这将在下面显示输出:

libxrender-dev - X Rendering Extension client library (development files)
libxrender1 - X Rendering Extension client library
libreoffice - office productivity suite (metapackage)

如果您在生产服务器上运行,只需安装libxrender1(用于呈现PDF):

sudo apt-get install libxrender1

此外,如果可能,请为服务器上的过时的库运行升级:

sudo apt upgrade

所有这些操作一旦完成,只需重新启动应用程序服务器(如果您的应用程序服务器为puma且服务器的安装系统为d):

sudo systemctl restart puma

仅此而已。

我希望这会有所帮助

答案 11 :(得分:0)

在重建我的一个容器之后,而在一切正常之前,我遇到了这个问题。我在网上找到的所有答案都对我不起作用,所以这是我如何解决和解决问题:

1。检查是否存在所有依赖项:

ldd path/to/your/binary/file/wkhtmltopdf-amd64

这就是我从中得到的

linux-vdso.so.1 =>  (0x00007ffded169000)
libXrender.so.1 => not found
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f117bab0000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f117b806000)
libXext.so.6 => not found
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f117b4cc000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f117b2b2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f117b0ae000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f117aea6000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f117ac89000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f117a907000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f117a5fe000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f117a3e8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f117a01e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f117bcf3000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f1179df5000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f1179bd0000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f11799ae000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f11797aa000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f11795a4000)

在“找不到”的地方表示缺少依赖项

2。 apt更新并安装

更新您的apt,因为很可能找不到安装所需的库

apt-get update

现在,我安装了上面结果中缺少“找不到”的依赖项。请注意,对于libxrenderlibxext,我必须安装libxrender-devlibxext-dev

apt-get install -y libxrender-dev libxext-dev