62

当我的应用程序运行(或当我从命令行运行时)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 服务器上运行的

4

12 回答 12

136

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

巴布亚新几内亚:

sudo emerge libXext libXrender

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

Debian 或 Ubuntu:

sudo apt-get install libxrender1
于 2011-02-18T00:10:04.747 回答
38

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

sudo apt-get install libxrender1
于 2012-06-06T04:12:45.780 回答
31

我还需要这样做:

sudo apt-get install libfontconfig1
于 2014-01-09T09:12:56.273 回答
13

今天在运行 wkhtmltopdf 的静态版本的 RHEL7 机器上遇到了这个问题。解决方案是安装一些依赖项:

yum install libXrender libXext fontconfig 
于 2016-03-22T17:09:28.200 回答
8

如果您的系统是 64 位,而您的软件需要 32 位库,则需要添加标志“i386”,

例如在 ubuntu 上:

sudo apt-get install libxrender1:i386
于 2016-08-02T15:01:41.073 回答
6

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

apt install -y libxrender1 libxext6
于 2016-08-19T08:06:08.307 回答
4

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

于 2011-12-30T18:49:05.737 回答
1

sudo apt-get install xvfb

安装依赖包。

更新节点模块 wkhtmltopdf index.js

wkhtmltopdf.command = 'wkhtmltopdf'; 到 'wkhtmltopdf.command = 'xvfb-run wkhtmltopdf';'

于 2018-06-14T10:19:48.103 回答
1

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

这是我解决它的方法

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

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并且如果您为服务器设置了 systemd):

sudo systemctl restart puma
于 2020-02-11T11:56:27.213 回答
1

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

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

现在我安装了上面结果中“未找到”的缺失依赖项。请注意,对于libxrenderandlibxext我必须安装libxrender-devand libxext-dev.

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

于 2020-11-24T10:09:27.423 回答
0

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

检查尝试

字符串 | fgrep UPX

如果您看到任何“UPX”id 字符串,则安装 upx 并在文件的副本上使用“upx -d”(因为 upx 可以正常工作),然后在未压缩的文件上运行 ldd。

于 2016-06-03T13:13:35.253 回答
0

在 Amazon Linux 2018:03 上对我有用的东西(用于未来的谷歌搜索)

yum localinstall -y https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/libpng15-1.5.30-7.el8.x86_64.rpm
yum localinstall -y https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
于 2021-09-27T16:10:45.207 回答