首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >/bin/sh: /usr/bin/wkhtmltopdf: not

/bin/sh: /usr/bin/wkhtmltopdf: not
EN

Unix & Linux用户
提问于 2019-06-03 07:25:10
回答 1查看 4.6K关注 0票数 1

我安装了/bin/sh: wkhtmltopdf /usr/bin/目录。但是,当我试图通过输入/usr/bin/wkhtmltopdf到shell来运行程序时,我会收到一个错误/bin/sh: /usr/bin/wkhtmltopdf: not found。但是,如果我输入sh /usr/bin/wkhtmltopdf,它就能工作。那是为什么,我怎样才能修好它?

权限为ls -l

代码语言:javascript
运行
复制
-rwxr-xr-x 1 1000 1000 38.0M Nov 22 2016 wkhtmltopdf

type -a wkhtmltopdf : /usr/bin/wkhtmltopdf

编辑:

我使用的操作系统是阿尔卑斯Linux。

ldd wkhtmltopdf的输出:

代码语言:javascript
运行
复制
/usr/bin # ldd wkhtmltopdf
    /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
    /usr/lib/preloadable_libiconv.so => /usr/lib/preloadable_libiconv.so (0x7f8871fec000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0x7f8871fe0000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x7f8871fa4000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x7f8871ef3000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x7f8871ee1000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x7f8871dbe000)
    libz.so.1 => /lib/libz.so.1 (0x7f8871da4000)
    libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
    librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x7f8871c4f000)
    libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f8871c3b000)
    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by wkhtmltopdf)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0x7f8871c18000)
    libuuid.so.1 => /lib/libuuid.so.1 (0x7f8871c0f000)
    libbz2.so.1 => /usr/lib/libbz2.so.1 (0x7f8871c00000)
    libpng16.so.16 => /usr/lib/libpng16.so.16 (0x7f8871bd0000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x7f8871ba9000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x7f8871ba4000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x7f8871b9c000)
    libbsd.so.0 => /usr/lib/libbsd.so.0 (0x7f8871b88000)

我通过在Docker中运行以下命令来安装wkhtmltopdf:

代码语言:javascript
运行
复制
 wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && \
    tar xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && \
    mv wkhtmltox/bin/wkhtmltopdf /usr/bin/ && mv wkhtmltox/bin/wkhtmltoimage /usr/bin
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-06-03 17:59:05

ldd输出所示,这个wkhtmltopdf二进制文件是针对glibc构建的,GNU库

代码语言:javascript
运行
复制
libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f88720cc000)
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by wkhtmltopdf)

libc库实现了C标准库函数、POSIX (libc.so.6)和动态链接器(ld-linux-x86-64.so.2)。glibc是大多数Linux发行版使用的最常见的libc实现。

在Alpine上,使用musl-libc。musl在性质上要简约得多,其目标是严格遵守POSIX标准。musl的库文件是libc.musl-x86_64.so.1,动态链接器是ld-musl-x86_64.so.1。因此,链接到glibc的程序将无法链接到musl。

要在阿尔卑斯Linux上运行glibc程序,通常需要安装glibc,如这里所述。在某些情况下,如果只需要基本的glibc兼容性,就足以安装libc6-compat,即musl兼容性包。

然而,一个更好的选择是安装相应的高山包,如果可以的话(根据我的经验,在大多数情况下,它是这样的)。在您的例子中,只需安装wkhtmltopdf包(阿尔卑斯3.9+):apk add wkhtmltopdf

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/522549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档