/bin/sh: /usr/bin/wkhtmltopdf: 찾을 수 없음

/bin/sh: /usr/bin/wkhtmltopdf: 찾을 수 없음

/bin/sh: wkhtmltopdf 디렉토리를 설치했습니다 /usr/bin/. 그러나 쉘에 들어가서 프로그램을 실행하려고 하면 /usr/bin/wkhtmltopdf오류가 발생합니다 /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

편집하다:

제가 사용하는 OS는 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

출력 에서 알 수 있듯이 lddwkhtmltopdf바이너리는 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)

그만큼libc라이브러리는 C 표준 라이브러리 함수는 물론 POSIX API( libc.so.6) 및 동적 링커( ld-linux-x86-64.so.2)를 구현합니다. glibc는 가장 일반적인 libc 구현이며 대부분의 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패키지(알파인 3.9+): apk add wkhtmltopdf.

관련 정보