When my app runs (or when I run from commandline) the wkhtmltopdf command I get the following error: (showing it from command line)
#> wkhtmltopdf
wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory
I noticed the lib is indeed in the /usr/lib
folder but not the /lib
folder. Does it matter which one of these it is in? Is there any way to get it to recognize it?
#> 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
I also checked dependencies of the 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)
This is running on an EngineYard gentoo server
asked Feb 17, 2011 at 22:39
1
The Unix packages x11-libs/libXext and x11-libs/libXrender are dependencies
Gentoo:
sudo emerge libXext libXrender
PDFkit wiki also explains in more detail how to get wkhtmltopdf working on engine yard.
PDFkit wiki
Debian or Ubuntu:
sudo apt-get install libxrender1
Tomerikoo
17.6k16 gold badges40 silver badges59 bronze badges
answered Feb 18, 2011 at 0:10
David BarlowDavid Barlow
4,8941 gold badge27 silver badges24 bronze badges
2
I had the same, issue on Debian Squeeze, amd64. Installing libxrender1 solved the issue for me.
sudo apt-get install libxrender1
answered Jun 6, 2012 at 4:12
contact920contact920
3813 silver badges3 bronze badges
0
I need also do after:
sudo apt-get install libfontconfig1
answered Jan 9, 2014 at 9:12
Grigory KislinGrigory Kislin
15.9k9 gold badges123 silver badges189 bronze badges
Ran into this today on a RHEL7 machine running the static version of wkhtmltopdf. Solution was to install a few dependencies:
yum install libXrender libXext fontconfig
answered Mar 22, 2016 at 17:09
a codera coder
7,37920 gold badges81 silver badges128 bronze badges
1
If your system is 64 bits, and your software requires 32 bits libs, you need to add the flag «i386»,
for example on ubuntu:
sudo apt-get install libxrender1:i386
answered Aug 2, 2016 at 15:01
风间月风间月
1411 silver badge5 bronze badges
With Ubuntu 16 (from a fresh Docker install):
apt install -y libxrender1 libxext6
Tomerikoo
17.6k16 gold badges40 silver badges59 bronze badges
answered Aug 19, 2016 at 8:06
Thomas DecauxThomas Decaux
21.1k2 gold badges110 silver badges118 bronze badges
I was having the exact same problem! The solution, to me, was to install the 64bit version of wkhtmltoimage.
answered Dec 30, 2011 at 18:49
AndréAndré
3252 silver badges9 bronze badges
0
sudo apt-get install xvfb
to install the dependency package.
Update the node-modules wkhtmltopdf index.js
wkhtmltopdf.command = ‘wkhtmltopdf’; to ‘wkhtmltopdf.command =
‘xvfb-run wkhtmltopdf’;’
answered Jun 14, 2018 at 10:19
kishorekishore
1341 silver badge8 bronze badges
I had this issue after rebuilding one of my containers, while before everything was working fine. All the answers I found online didn’t work for me, so here’s how I troubleshooted and resolved:
1. Check if all dependencies are there:
ldd path/to/your/binary/file/wkhtmltopdf-amd64
Here’s what I got from that
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)
Where I got «not found» means the dependencies were missing
2. apt update and install
Update your apt, as it’s likely it won’t find the libraries needed to install
apt-get update
Now I installed the missing dependencies that had the «not found» in the results above. Take note that for the libxrender
and libxext
I had to install libxrender-dev
and libxext-dev
.
apt-get install -y libxrender-dev libxext-dev
answered Nov 24, 2020 at 10:09
I had this same issue on running a Rails 5.2 application on an Ubuntu 18.04 production server, the issue was that there were missing dependencies for libXrender
on the server
Here’s how I solved it:
Run the command below to search for the missing dependencies:
sudo apt-cache search libXrender
This will display the output below:
libxrender-dev - X Rendering Extension client library (development files)
libxrender1 - X Rendering Extension client library
libreoffice - office productivity suite (metapackage)
If you’re running on a production server, simply install libxrender1
only (for rendering PDFs):
sudo apt-get install libxrender1
Also, if possible run upgrades for outdated libraries on your server:
sudo apt upgrade
Once all these have been completed, simply restart your application server (If your application server is puma
and if your setup systemd for the server):
sudo systemctl restart puma
Tomerikoo
17.6k16 gold badges40 silver badges59 bronze badges
answered Feb 11, 2020 at 11:56
Promise PrestonPromise Preston
21.1k11 gold badges127 silver badges128 bronze badges
Note that there is an executable version of wkhtmltopdf distributed in a UPX compressed format, ldd and file will both report that this file is statically linked even though the payload requires shared libraries.
To check try
strings | fgrep UPX
If you see any «UPX» id strings then install upx and use «upx -d» on a copy of the file (as upx works in place) and then run ldd on the uncompressed file.
answered Jun 3, 2016 at 13:13
What worked for me (for future google searchs), on an 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
answered Sep 27, 2021 at 16:10
Я пытаюсь использовать команду wkhtmltopdf для создания и преобразования html-страниц в pdf. Тем не менее, я сталкиваюсь с ошибками, вроде той, что показана ниже, при попытке использовать wkhtmltopdf через оболочку или скрипт Python:
Creating foo.pdf … ~/bin/wkhtmltox/bin/wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory Error: foo.pdf not found. (Создание foo.pdf … ~/bin/wkhtmltox/bin/wkhtmltopdf: Ошибка при загрузке совместно используемых библиотек: libXrender.so.1: невозможно открыть совместно используемый фал: Отсутствует данный файл или директория Ошибка: foo.pdf не найден )
Как исправить эту проблему, не устанавливая xserver на моем сервере Ubuntu или Debian?
Вы можете найти недостающие библиотеки, используя команду ldd:
$ ldd /path/to/wkhtmltopdf
Примеры возможных выводов данных:
linux-vdso.so.1 => (0x00007fffdd3c6000) libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f64cd4bd000) libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f64cd27a000) libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f64ccfcf000) libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f64ccdbd000) libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f64cca83000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f64cc868000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f64cc664000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f64cc45c000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f64cc23e000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f64cbebc000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f64cbbb3000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f64cb99c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f64cb5d3000) /lib64/ld-linux-x86-64.so.2 (0x00005564cb080000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f64cb3aa000) libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f64cb184000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f64caf62000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f64cad5d000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f64cab57000)
Теперь вы можете искать недостающие библиотеки, используя:
$ apt-cache search libXrender
В моем случае, недостающие библиотеки были следующими:
- libXrender: X Rendering Extension клиентская библиотека
- libfontconfig1: generic font configuration библиотека – процесс работы
Исправление ошибок при загрузке совместно используемых библиотек на Ubuntu/Debian Linux
Теперь, для решения этой проблемы, вооружившись новой информацией, мне нужно использовать следующие apt-get command или apt command команды для установки libxrender1 и libfontconfig1:
$ sudo apt-get install libfontconfig1 libxrender1
Или
$ sudo apt install libfontconfig1 libxrender1
Если вы используете какой-либо другой дистрибутив Linux, вам необходимо выполнить поиск, как описано выше, и установить отсутствующие библиотеки.
Перевод: Анна Давыдова
Источник: cyberciti.biz
Это интересно:
- Установка и настройка Apache, PHP, MySQL, phpMyAdmin на Linux (LAMP)
- Установка и настройка сервера Apache, PHP, MySQL, phpMyAdmin на Windows 10
- Установка Adobe Photoshop CS6 на Linux (очень простой способ)
when i trying to ran qt-linux-opensource-5.0.2-x86-offline.run I gets below error.
./qt-linux-opensource-5.0.2-x86-offline.run: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
I have installed Qt before but I didn’t get any error.
I think the cause should below command
sudo apt-get autoremove
I ran this command to my newly installed ubuntu.
I found this article online
http://docs.alfresco.com/5.0/concepts/install-lolibfiles.html
so I ran below command
sudo apt-get install libice6 libsm6 libxt6 libxrender1 libfontconfig1 libcups2
but terminal says its already installed
libsm6 is already the newest version
can anyone tell me a way to install qt creater
asked Apr 21, 2015 at 8:11
4
libSM.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libSM.so.6
The program requires 32-bit libraries. You need libsm6:i386
sudo apt-get install libsm6:i386
And now, ldconfig -p | grep libSM.so.6
should look like this:
libSM.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libSM.so.6
libSM.so.6 (libc6) => /usr/lib/i386-linux-gnu/libSM.so.6
And for all other missing libraries use the same strategy:
e.g. libXrender.so.1
$ apt-file search libXrender.so.1
libxrender1: /usr/lib/x86_64-linux-gnu/libXrender.so.1
libxrender1: /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
libxrender1-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
$ sudo apt-get install libxrender1:i386
Fabby
34.1k38 gold badges96 silver badges191 bronze badges
answered Apr 21, 2015 at 13:04
A.B.A.B.
87.7k21 gold badges242 silver badges317 bronze badges
8
Problem
User upgraded product to latest maintenance.
After upgrade, the user attempted to start program: spadmin.sh, startup failed for the utility.
Symptom
Exception in thread «main» java.lang.UnsatisfiedLinkError: /app/cdunix/jre/ibm-java-i386-70/jre/lib/i386/xawt/libmawt.so (libXrender.so.1: cannot open shared object file: No such file or directory)
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1230)
at java.lang.System.load(System.java:517)
at java.lang.ClassLoader.loadLibraryWithPath(Native Method)
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1222)
at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:1194)
at java.lang.System.loadLibrary(System.java:530)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:80)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:60)
at java.security.AccessController.doPrivileged(AccessController.java:285)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1668)
at java.awt.Toolkit.<clinit>(Toolkit.java:1697)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:235)
at java.awt.Component.<clinit>(Component.java:607)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:235)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
Cause
User original installation $CDHOME/jre/ibm-java-i386-60 directory was link to the 64 bit libary which allowd the libwawt.so libary to used the 64bit libraies where the libXrender.so.1 was installed.
The new installation was not link to the 64bit jre so it was calling for the 32bit libXrender.so.1
Resolving The Problem
Option 1: Point the new /ibm-java-i386-70 to a 64bit JRE
Option 2: Install the 32bit libraries for X11 (libXrender.so.1)
[{«Product»:{«code»:»SSKTYY»,»label»:»IBM Sterling Connect:Direct for UNIX»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:»Not Applicable»,»Platform»:[{«code»:»PF016″,»label»:»Linux»}],»Version»:»4.2;4.1″,»Edition»:»»,»Line of Business»:{«code»:»LOB59″,»label»:»Sustainability Software»}},{«Product»:{«code»:»SSKTYY»,»label»:»IBM Sterling Connect:Direct for UNIX»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:» «,»Platform»:[{«code»:»»,»label»:»»}],»Version»:»»,»Edition»:»»,»Line of Business»:{«code»:»LOB59″,»label»:»Sustainability Software»}}]
Новые и опытные пользователи Linux могут сталкиваться с ошибкой error loading shared libraries во время запуска программ, также с ней могут сталкиваться программисты и все желающие компилировать программное обеспечение в своей системе. Эта ошибка в дословном переводе означает что возникла проблема во время загрузки общей библиотеки. О том что такое библиотеки и зачем они нужны вы можете узнать из статьи библиотеки Linux.
В этой же статье мы рассмотрим что значит ошибка error while loading shared libraries более подробно, а главное, как ее решить.
Даже если вы не компилируете свои программы, то вы можете увидеть ошибку error while loading shared libraries: имя_библиотеки: cannot open shared object file: No such file or directory достаточно часто во время установки новых программ не через пакетный менеджер или программ, предназначенных для другого дистрибутива. Как я уже говорил, она возникает потому, что система не может найти библиотеку.
А вот почему ее нельзя найти и загрузить, это уже интересно. Этому может быть несколько причин:
- Библиотека не установлена в системе;
- Библиотека установлена, но неизвестно куда;
- Библиотека установлена правильно, но имеет не ту версию.
При решении проблемы мы будем руководствоваться именно этими причинами и пытаться их решить.
Как исправить ошибку?
1. Библиотека не установлена
Первый вариант, тут все понятно, библиотеки просто нет в системе, поэтому мы и получаем такую ошибку. Верный способ ее решения — просто найти пакет библиотеки с помощью пакетного менеджера и установить ее. Обычно, пакеты с библиотеками называются так же, как и сами библиотеки с префиксом lib.
Например, если нам не хватает библиотеки libfuse2.so, то мы можем найти ее в Ubuntu такой командой:
sudo apt search libfuse2
Затем осталось только установить ее:
sudo apt install libfuse2
Если перед вами стоит задача собрать программу из исходников, то вам понадобится не только установить саму библиотеку, но и заголовочные файлы для нее:
sudo apt install libfuse-dev
И так для любой библиотеки. Но это не всегда помогает.
2. Библиотека находится не в том каталоге
Бывает что библиотека установлена, мы установили ее или она поставлялась вместе с программой, но ошибка как была, так и есть. Причиной этому может быть то, что загрузчик Linux не может найти библиотеку.
Поиск библиотек выполняется по всех папках, которые указаны в конфигурационных файлах /etc/ld.conf.d/. По умолчанию, это такие каталоги, как /usr/lib, /lib, /usr/lib64, /lib64. Если библиотека установлена в другой каталог, то, возможно, это и есть причина проблемы.
Вы можете посмотреть какие библиотеки сейчас доступны загрузчику с помощью команды:
ldconfig -p
Найти, где находится ваша библиотека можно с помощью команды locate. Например, нас интересует библиотека librtfreader.so:
locate librtfreader
Теперь мы знаем, что она находится по адресу /opt/kingsoft/wps-office/office6/. А значит, для работы программы необходимо сделать чтобы загрузчик библиотек ее видел. Для этого можно добавить путь в один из файлов /etc/ld.so.conf.d/ или же в переменную LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/opt/kingsoft/wps-office/office6/
Опять же, так вы можете поставить с любой библиотекой, которая взывает ошибку. Еще один более простой метод — это просто создать символическую ссылку на нужную библиотеку в правильной папке:
ln -s /opt/kingsoft/wps-office/office6/librtfreader.so /usr/lib/librtfreader.so
3. Неверная версия библиотеки
Эта причина ошибки довольно часто встречается при использовании программ не для вашего дистрибутива. Каждая библиотека имеет дополнительную версию, так называемую ревизию, которая записывается после расширения .so. Например, libav.so.1. Так вот, номер версии меняется всякий раз, когда в библиотеку вносятся какие-либо исправления.
Часто возникает ситуация, когда в одном дистрибутиве программа собирается с зависимостью от библиотеки, например, libc.so.1, а в другом есть только libc.so.2. Отличия в большинстве случаев здесь небольшие и программа могла бы работать на второй версии библиотеки. Поэтому мы можем просто создать символическую ссылку на нее.
Например, библиотеки libusb-1.0.so.1 нет. Но зато есть libusb-1.0.so.0.1, и мы можем ее использовать:
Для этого просто создаем символическую ссылку на библиотеку:
sudo ln -s /usr/lib/libusb-1.0.so.0.1 /usr/lib/libusb-1.0.so.1
В большинстве случаев программа не заметит подмены и будет работать, как и ожидалось. Также для решения этой проблемы можно попытаться найти нужную версию библиотеки в интернете для своей архитектуры и поместить ее в папку /usr/lib/ или /usr/lib64/. Но после этого желательно обновить кэш:
sudo ldconfig
Выводы
В этой статье мы рассмотрели почему возникает ошибка Error while loading shared libraries, а также как ее решить. В большинстве случаев проблема решается довольно просто и вы получите работоспособную программу. Надеюсь, эта информация была полезной для вас.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .