/bin/sh: /usr/bin/wkhtmltopdf: no encontrado

/bin/sh: /usr/bin/wkhtmltopdf: no encontrado

Instalé /bin/sh: /usr/bin/directorio wkhtmltopdf. Sin embargo, cuando intento ejecutar el programa ingresando /usr/bin/wkhtmltopdfal shell, recibo un error /bin/sh: /usr/bin/wkhtmltopdf: not found. Funciona, sin embargo, si entro sh /usr/bin/wkhtmltopdf. ¿A qué se debe esto y cómo puedo solucionarlo?

Los permisos son ls -l:

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

type -a wkhtmltopdf : /usr/bin/wkhtmltopdf

Editar:

El sistema operativo que uso es Alpine Linux.

Salida de 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)

Instalé wkhtmltopdf ejecutando los siguientes comandos en Docker:

 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

Respuesta1

Como lo indica el lddresultado, este wkhtmltopdfbinario está construido contra glibc, elBiblioteca 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)

EllibcLa biblioteca implementa las funciones de la biblioteca estándar de C, así como la API POSIX ( libc.so.6) y el vinculador dinámico ( ld-linux-x86-64.so.2). glibc es la implementación de libc más común y utilizada por la mayoría de las distribuciones de Linux.

En Alpine Linux,musl-libcse utiliza. musl es de naturaleza mucho más minimalista y apunta a un fuerte cumplimiento de POSIX. El archivo de biblioteca para musl es libc.musl-x86_64.so.1y el vinculador dinámico es ld-musl-x86_64.so.1. Por lo tanto, los programas vinculados a glibc no podrán vincularse a musl libc.

Para ejecutar programas glibc en Alpine Linux, normalmente es necesario instalar glibc, como se describeaquí. En algunos casos, si solo se requiere compatibilidad básica con glibc, basta con instalar libc6-compatcuál es el paquete de compatibilidad musl-glibc.

Sin embargo, una mejor alternativa es instalar el paquete Alpine correspondiente, si está disponible (según mi experiencia, en la mayoría de los casos lo está). En su caso, simplemente instale elwkhtmltopdfpaquete (Alpine 3.9+): apk add wkhtmltopdf.

información relacionada