/bin/sh: /usr/bin/wkhtmltopdf: 未找到

/bin/sh: /usr/bin/wkhtmltopdf: 未找到

我安裝了 /bin/sh:wkhtmltopdf/usr/bin/目錄。但是,當我嘗試透過進入/usr/bin/wkhtmltopdfshell 來運行該程式時,我收到錯誤/bin/sh: /usr/bin/wkhtmltopdf: not found。但是,如果我輸入sh /usr/bin/wkhtmltopdf.這是為什麼?

權限是ls -l

-rwxr-xr-x 1 1000 1000 38.0M Nov 22 2016 wkhtmltopdf

type -a wkhtmltopdf : /usr/bin/wkhtmltopdf

編輯:

我使用的作業系統是Alpine Linux

輸出ldd wkhtmltopdf

/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:

 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

答案1

如輸出所示ldd,該wkhtmltopdf二進位檔案是針對 glibc 建置的,GNU C 函式庫:

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)

函式庫實作了 C 標準函式庫函數,以及 POSIX API ( libc.so.6) 和動態連結器 ( ld-linux-x86-64.so.2)。 glibc 是最常見的 libc 實現,大多數 Linux 發行版都使用它。

在 Alpine Linux 上,musl-libc 函式庫用來。 musl 本質上更加簡約,旨在實現強大的 POSIX 合規性。 musl 的庫檔案是libc.musl-x86_64.so.1,動態連結器是ld-musl-x86_64.so.1。因此,連結到 glibc 的程式將無法連結到 musl libc。

要在 Alpine Linux 上執行 glibc 程序,通常需要安裝 glibc,如下所述這裡。在某些情況下,如果只需要基本的 glibc 相容性,安裝libc6-compatmusl-glibc 相容套件就足夠了。

然而,更好的選擇是安裝相應的 Alpine 軟體包(如果可用的話)(根據我的經驗,在大多數情況下是這樣)。對於您的情況,只需安裝wkhtmltopdf軟體包(Alpine 3.9+):apk add wkhtmltopdf.

相關內容