Error while loading shared libraries libpq so 5

I am trying to execute pg_dump on PostgreSQL 9.0.4 server running on Debian and I am getting the error below: ./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object...

I am trying to execute pg_dump on PostgreSQL 9.0.4 server running on Debian and I am getting the error below:

./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory 

libpq.so.5 is a link to libpq.so.5.3 as shown below

lrwxrwxrwx 1 root root     12 Jun 27 16:24 libpq.so.5 -> libpq.so.5.3
-rwxr-xr-x 1 root root 180749 Jun 21 02:43 libpq.so.5.3

What is it that I am doing wrong?

Jan Nielsen's user avatar

Jan Nielsen

10.6k13 gold badges66 silver badges115 bronze badges

asked Oct 8, 2012 at 12:16

McKibet's user avatar

Try this:

1: Know the path of libpq.so.5

find / -name libpq.so.5

Output example:
/usr/pgsql-9.4/lib/libpq.so.5
If found nothing, check if you have already installed the suitable postgresql-libs for your postgresql version and your OS platform

2: Symbolic link that library in a «well known» library path like /usr/lib:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5

Attention:
If your platform is 64 bit, you MUST also symbolic link to 64 bit libraries path:

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5

3: Be happy !

Jan Nielsen's user avatar

Jan Nielsen

10.6k13 gold badges66 silver badges115 bronze badges

answered Mar 12, 2015 at 13:48

Yahya Yahyaoui's user avatar

2

In which directory are these libpq files? You can try setting environment variable LD_LIBRARY_PATH to point to this directory or make sure it’s in standard place.

Also, why isn’t the libpq.so.5 link shown in the «as shown below» section? Maybe you should just run ldconfig?

answered Oct 8, 2012 at 12:18

Michael Krelin - hacker's user avatar

16

I was getting the same error message on Postgres 9.5 on RHEL 6.5 which lead me to this post. But a find for the file libpq.so.5 returned nothing, which made things more confusing.

In the end the following symbolic links made it run

ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib64/libpq.so.rh-postgresql95-5 
ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib/libpq.so.rh-postgresql95-5

These paths are for RHEL, use find / -name libpq.so to location your installation and add it to the same destination folders /usr/lib/ and /usr/lib64/ using the orginal file name.

The root cause appears that the installation did not place this file into a shared location.

answered Oct 23, 2016 at 7:00

oden's user avatar

odenoden

3,4061 gold badge30 silver badges32 bronze badges

2

Ubuntu 21.10+

Since this is the top search result for the error. I’ll add an updated answer. I received the error when trying to start a django server.

I hadn’t installed the postgres stuff.

Try:

sudo apt install libpq-dev

See:

  • https://packages.ubuntu.com/impish/libpq-dev

answered Apr 11, 2022 at 16:30

jmunsch's user avatar

jmunschjmunsch

21.6k10 gold badges89 silver badges109 bronze badges

1

This error probably occurs because of $LD_LIBRARY_PATH environment variable is not set.

When you install your application from source code using prefix (./configure --prefix=/some/path), you have to inform where your lib/ path is. I just found a solution for this, and I added this variable to postgres user init bash script:

printf 'export PATH=$PATH:/opt/apl/pgsql/binnexport LD_LIBRARY_PATH=/opt/apl/pgsql/lib:$LD_LIBRARY_PATHn' > /etc/profile.d/postgres.sh

answered Sep 20, 2019 at 21:10

Joabe Lucena's user avatar

redhat 7 is missing few steps after installing yum install pgadmin4:

sudo ln -s /usr/lib64/pgdg-libpq5/lib/libpq.so /usr/lib64/libpq.so.5
sudo ln -s /usr/lib64/pgdg-libpq5/lib/libpq.so /usr/lib/libpq.so.5
sudo chown -R apache:apache  /var/lib/pgadmin4/

then you can run

sudo python3 /usr/lib/python3.6/site-packages/pgadmin4-web/setup.py

and if all successful:

systemctl start httpd
systemctl status httpd
apachectl configtest

and make sure the httpd starts ok

answered May 11, 2020 at 14:34

taitelman's user avatar

taitelmantaitelman

5924 silver badges9 bronze badges

I had exactly the same problem with the pg 9.6 install. I fixed it like this. Rather irritating that the installer doesn’t factor this in.

***********post yum install & running initdb *********
Success. You can now start the database server using:

    /opt/rh/rh-postgresql96/root/usr/bin/pg_ctl -D /var/opt/rh/rh-postgresql96/lib/pgsql/data -l logfile start

-bash-4.2$ /opt/rh/rh-postgresql96/root/usr/bin/pg_ctl -D /var/opt/rh/rh-postgresql96/lib/pgsql/data -l logfile start
/opt/rh/rh-postgresql96/root/usr/bin/pg_ctl: **error while loading shared libraries: libpq.so.rh-postgresql96-5: cannot open shared object file: No such file or directory**

-bash-4.2$ id
uid=26(postgres) gid=26(postgres) groups=26(postgres) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

**************
-bash-4.2$ cat LibFix
ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5  /usr/lib64/libpq.so.rh-postgresql96-5
ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5  /usr/lib/libpq.so.rh-postgresql96-5
**************

[root@****lab ~]# ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5  /usr/lib64/libpq.so.rh-postgresql96-5
[root@****lab ~]# ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5  /usr/lib/libpq.so.rh-postgresql96-5

[root@****lab ~]# su - postgres
Last login: Thu Apr  5 08:57:21 CEST 2018 on pts/0

-bash-4.2$ /opt/rh/rh-postgresql96/root/usr/bin/pg_ctl -D /var/opt/rh/rh-postgresql96/lib/pgsql/data -l logfile start
server starting

-bash-4.2$ ps -ef | grep postgres
root     12778  7883  0 09:07 pts/0    00:00:00 su - postgres
postgres 12779 12778  0 09:07 pts/0    00:00:00 -bash
postgres 12802     1  0 09:08 pts/0    00:00:00 /opt/rh/rh-postgresql96/root/usr/bin/postgres -D /var/opt/rh/rh-postgresql96/lib/pgsql/data
postgres 12803 12802  0 09:08 ?        00:00:00 postgres: logger process
postgres 12805 12802  0 09:08 ?        00:00:00 postgres: checkpointer process
postgres 12806 12802  0 09:08 ?        00:00:00 postgres: writer process
postgres 12807 12802  0 09:08 ?        00:00:00 postgres: wal writer process
postgres 12808 12802  0 09:08 ?        00:00:00 postgres: autovacuum launcher process
postgres 12809 12802  0 09:08 ?        00:00:00 postgres: stats collector process
postgres 12810 12779  0 09:08 pts/0    00:00:00 ps -ef

-bash-4.2$ id
uid=26(postgres) gid=26(postgres) groups=26(postgres) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-bash-4.2$ psql
psql (9.6.5)

postgres=# conninfo

You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

Fovas Denis's user avatar

answered Apr 5, 2018 at 7:35

Ade's user avatar

0

Содержание

  1. Ошибка error while loading shared libraries
  2. Что означает error while loading shared libraries?
  3. Как исправить ошибку?
  4. 1. Библиотека не установлена
  5. 2. Библиотека находится не в том каталоге
  6. 3. Неверная версия библиотеки
  7. Выводы
  8. Psql error while loading shared libraries
  9. 17.5.2. Environment Variables
  10. Submit correction
  11. Runtime error: error while loading shared libraries: libpq.so.5 #2030
  12. Comments
  13. Setup
  14. Versions
  15. Feature Flags
  16. Problem Description
  17. What are you trying to accomplish?
  18. Steps to reproduce
  19. Checklist
  20. Установка postgresql на slackware: error while loading shared libraries: libpam.so.0
  21. Спасибо:)
  22. Ошибка при загрузке общих библиотек: libpq.so.5: невозможно открыть общий объектный файл: нет такого файла или каталога
  23. 7 ответы

Новые и опытные пользователи 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. Если библиотека установлена в другой каталог, то, возможно, это и есть причина проблемы.

Вы можете посмотреть какие библиотеки сейчас доступны загрузчику с помощью команды:

Найти, где находится ваша библиотека можно с помощью команды locate. Например, нас интересует библиотека librtfreader.so:

Теперь мы знаем, что она находится по адресу /opt/kingsoft/wps-office/office6/. А значит, для работы программы необходимо сделать чтобы загрузчик библиотек ее видел. Для этого можно добавить путь в один из файлов /etc/ld.so.conf.d/ или же в переменную LD_LIBRARY_PATH:

Опять же, так вы можете поставить с любой библиотекой, которая взывает ошибку. Еще один более простой метод — это просто создать символическую ссылку на нужную библиотеку в правильной папке:

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/. Но после этого желательно обновить кэш:

Выводы

В этой статье мы рассмотрели почему возникает ошибка Error while loading shared libraries, а также как ее решить. В большинстве случаев проблема решается довольно просто и вы получите работоспособную программу. Надеюсь, эта информация была полезной для вас.

Источник

On some systems with shared libraries you need to tell the system how to find the newly installed shared libraries. The systems on which this is not necessary include FreeBSD , HP-UX , Linux , NetBSD , OpenBSD , and Solaris .

The method to set the shared library search path varies between platforms, but the most widely-used method is to set the environment variable LD_LIBRARY_PATH like so: In Bourne shells ( sh , ksh , bash , zsh ):

or in csh or tcsh :

Replace /usr/local/pgsql/lib with whatever you set —libdir to in Step 1. You should put these commands into a shell start-up file such as /etc/profile or

/.bash_profile . Some good information about the caveats associated with this method can be found at http://xahlee.info/UnixResource_dir/_/ldpath.html.

On some systems it might be preferable to set the environment variable LD_RUN_PATH before building.

On Cygwin , put the library directory in the PATH or move the .dll files into the bin directory.

If in doubt, refer to the manual pages of your system (perhaps ld.so or rld ). If you later get a message like:

then this step was necessary. Simply take care of it then.

If you are on Linux and you have root access, you can run:

(or equivalent directory) after installation to enable the run-time linker to find the shared libraries faster. Refer to the manual page of ldconfig for more information. On FreeBSD , NetBSD , and OpenBSD the command is:

instead. Other systems are not known to have an equivalent command.

17.5.2. Environment Variables

If you installed into /usr/local/pgsql or some other location that is not searched for programs by default, you should add /usr/local/pgsql/bin (or whatever you set —bindir to in Step 1) into your PATH . Strictly speaking, this is not necessary, but it will make the use of PostgreSQL much more convenient.

To do this, add the following to your shell start-up file, such as

/.bash_profile (or /etc/profile , if you want it to affect all users):

If you are using csh or tcsh , then use this command:

To enable your system to find the man documentation, you need to add lines like the following to a shell start-up file unless you installed into a location that is searched by default:

The environment variables PGHOST and PGPORT specify to client applications the host and port of the database server, overriding the compiled-in defaults. If you are going to run client applications remotely then it is convenient if every user that plans to use the database sets PGHOST . This is not required, however; the settings can be communicated via command line options to most client programs.

Prev Up Next
17.4. Installation Procedure Home 17.6. Supported Platforms

Submit correction

If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.

Copyright © 1996-2023 The PostgreSQL Global Development Group

Источник

Setup

Versions

  • Rust: 1.33.0 (stable)
  • Diesel: 1.4.2
  • Database: PostgreSQL
  • Operating System: Amazon Linux AMI 2017.03

Feature Flags

  • diesel: postgres, chrono, serde_json

Problem Description

Keep seeing this runtime error:

To the best of my knowledge, my build script installs PostgreSQL correctly

What are you trying to accomplish?

I’m trying to use Diesel in an AWS Lambda, using Now to handle the infrastructure (it uses Amazon Linux AMI 2017.03 and runs a user-defined build script for setup). I’m just including these details for full context; I don’t think Now’s platform is contributing to the issue.

Steps to reproduce

I have a repository here that includes my code and schema (not that I think they’re the problem), as well as the build script that installs PostgreSQL in my Lambda function

Checklist

  • I have already looked over the issue tracker for similar issues.
  • This issue can be reproduced on Rust’s stable channel. (Your issue will be
    closed if this is not the case)

The text was updated successfully, but these errors were encountered:

Источник

Установка postgresql на slackware: error while loading shared libraries: libpam.so.0

В слаке нет этой либы:

/opt/PostgreSQL/8.4/bin/initdb: error while loading shared libraries: libpam.so.0: cannot open shared object file: No such file or directory

Нашел статью http://www.opennet.ru/tips/info/803.shtml Статья довольно старая, поэтому вызывает сомнения.. К тому же нет никаких других статей на эту тему, и пакетов в slackbuilds. Не может же быть, что я один ставлю postgresql на слаку. Какой путь будет наиболее логичен для дистрибутива?

для дистрибутива будет логично взять исходники постреса и пересобрать его без PAM

Спасибо:)

Не догадался что сам постгрес может быть в слакбилдах эх.

а еще можно поставить этот несчастный пам. юзать же его не обязательно.

у меня стоит, без костылей ставилась с сырцов.
/usr/bin/psql —version
psql (PostgreSQL) 8.4.1
contains support for command-line editing

Не может же быть, что я один ставлю postgresql на слаку.

Конечно же вы самый первый.

вариант:
$sudo /usr/sbin/slapt-get —search postgresql
postgresql-8.4.1-i486-1sl [inst=да]: PostgreSQL (Relational database server)

Источник

Ошибка при загрузке общих библиотек: libpq.so.5: невозможно открыть общий объектный файл: нет такого файла или каталога

Я пытаюсь выполнить pg_dump на сервере PostgreSQL 9.0.4, работающем на Debian, и я получаю следующую ошибку:

libpq.so.5 это ссылка на libpq.so.5.3 как показано ниже

Что я делаю не так?

7 ответы

1: Знай путь libpq.so.5

Пример вывода: /usr/pgsql-9.4/lib/libpq.so.5 Если ничего не найдено, проверьте, не установили ли вы уже подходящие библиотеки postgresql для вашей версии postgresql и платформы вашей ОС.

2: Символическая ссылка на эту библиотеку по «хорошо известному» пути к библиотеке, например /usr/lib :

Внимание: Если ваша платформа 64-битная, вы ДОЛЖНЫ также символически ссылаться на путь 64-битных библиотек:

3: Будь счастлив!

ответ дан 03 окт ’16, 23:10

Все утилиты postgress терпели неудачу из-за отсутствия libp, пока я не объявил LD_LIBRARY_PATH. Но затем pg_dump перестал работать при импорте, когда была загружена какая-то другая библиотека. Ваш намек с ln на известное место решил эту проблему. — Лев Литерак

Все еще получаю ту же ошибку после создания символических ссылок — Чаминда Бандара

В каком каталоге эти libpq файлы? Вы можете попробовать установить переменную среды LD_LIBRARY_PATH чтобы указать на этот каталог или убедиться, что он находится в стандартном месте.

Кроме того, почему не libpq.so.5 ссылка, показанная в разделе «как показано ниже»? Может быть, вы должны просто бежать ldconfig ?

ответ дан 08 окт ’12, 13:10

файлы libpq находятся в /opt/postgres/9.0.4/server/lib — Маккибет

Пытаться LD_LIBRARY_PATH=/opt/postgres/9.0.4/server/lib ./pg_dump команда. — Михаил Крелин — хакер

Я все еще получаю ту же ошибку. Я даже пробовал EXPORT LD_LIBRARY_PATH=/opt/postgres/9.0.4/server/lib перед запуском команды, но ничего положительного. — Маккибет

Ничего особенного. Я думаю, что единственное оставшееся решение — переустановить postgresql. Спасибо @Мартин. Я ценю. — Маккибет

я должен был запустить это ln -s /opt/postgres/9.0.4/server/lib/libpq.so.5.3 /usr/lib/libpq.so.5 и это сработало! — Маккибет

Я получал такое же сообщение об ошибке в Postgres 9.5 на RHEL 6.5, что привело меня к этому сообщению. Но находка для файла libpq.so.5 ничего не вернул, что сделало ситуацию еще более запутанной.

В конце концов, следующие символические ссылки заставили его работать

Эти пути предназначены для RHEL, используйте find / -name libpq.so чтобы разместить вашу установку и добавить ее в те же папки назначения /usr/lib/ и /usr/lib64/ используя оригинальное имя файла.

Основная причина заключается в том, что установка не поместила этот файл в общую папку.

Источник

установка на pipo x9s

установка на pipo x9s

Добрый день. Пытаюсь установить дэнси на планшет pipo x9s lubuntu-17.10 64bit. При запуске dnc_kassa выдает ошибку dnc_kassa: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory. Хотя пакет libpq5 установлен и поиском нахожу файл libpq.so.5 в папке /usr/lib/x86_64-linux-gnu/libpq.so.5 Может дэнси не там ищет и нужно сделать линк в нужном месте?

unabomber
 
Постов: 19
Зарегистрирован: 21 май 2016, 22:12

Re: установка на pipo x9s

Сообщение Alexander » 06 дек 2017, 13:08

Попробуйте ссылку в /usr/lib/ или /usr/lib64/ сделать

Alexander
 
Постов: 4873
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ
  • Сайт

Re: установка на pipo x9s

Сообщение unabomber » 06 дек 2017, 14:20

Пробовал и так и так ещё до того как сюда написать, подумал может ёщё какое место есть. Папки lib64 в системе изначально нет, есть только /usr/lib/x86_64-linux-gnu/ и все х64 библиотеки ставятся туда.Из за этого и установочный скрипт пришлось править, т.к. он пытается в lib64 установить.Пробовал lib64 создать вручную и туда установить и ссылку сделать с тем же результатом …No such file or directory. Если сделать ссылку на папку lib, то ругается на разрядность файла dnc_kassa: error while loading shared libraries: libpq.so.5: wrong ELF class: ELFCLASS64. У меня пока идеи закончились решил у вас спросить.

unabomber
 
Постов: 19
Зарегистрирован: 21 май 2016, 22:12

Re: установка на pipo x9s

Сообщение Alexander » 06 дек 2017, 14:43

А сама Д:К какой сборки? 32 или 64 ?

Alexander
 
Постов: 4873
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ
  • Сайт

Re: установка на pipo x9s

Сообщение unabomber » 06 дек 2017, 15:15

Да, видимо в этом проблема. При установке из dnc_setup.iso 1.2.5 копировал вручную файлы из папки bin_64 в usr/bin/ а потом накатил обновление 1.3.1, но не вручную, а через dnc_iso_update, сейчас посмотрел в /usr/bin/ все файлы ДК 32 разрядные. Видимо обновляться тоже вручную нужно.

unabomber
 
Постов: 19
Зарегистрирован: 21 май 2016, 22:12

Re: установка на pipo x9s

Сообщение unabomber » 06 дек 2017, 19:47

После замены всех 32 битных файлов на х64 ДК запустилась с 79 ошибкой. dnc_dbupdate не исправляет ситуацию, каждый раз при запуске ошибка 79. Также при выборе настроек драйверов устройств в консоли появляется много строк /dev/mmcblk0p: No such file or directory. Возможно ли, что eMMC диск не подходит для установки, или структура диска? Диск разметил как gpt 4 раздела efi, /, swap, /home. ДК установлен на mmcblk0p2. Возможно конечно, что ядро ещё не полностью поддерживает всё оборудование, железка относительно новая, поэтому и ставил последнюю lubuntu с ядром 4.13.0-17. Подскажите, что вы обо всём этом думаете?

unabomber
 
Постов: 19
Зарегистрирован: 21 май 2016, 22:12

Re: установка на pipo x9s

Сообщение Alexander » 07 дек 2017, 13:29

Какая точно сборка ДЭНСИ: КАССы сейчас установлена?

Alexander
 
Постов: 4873
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ
  • Сайт

Re: установка на pipo x9s

Сообщение unabomber » 07 дек 2017, 14:34

1.3.1 patch2. Попробовал сделать ссылку на диск, который появляется в консоли mmcblk0p, чтобы ссылка указывала на корневой раздел mmcblk0p2. Сообщения в консоли поменялись на ioctl invalid argument

unabomber
 
Постов: 19
Зарегистрирован: 21 май 2016, 22:12

Re: установка на pipo x9s

Сообщение Alexander » 07 дек 2017, 14:57

Попробуйте ссылку сделать не на раздел, а на основной файл устройства

Чуть позже выложу чистую БД от 1.3.1 patch2 — можно попробовать заменить текущую базу, должно помочь справиться с ошибкой 79.

Alexander
 
Постов: 4873
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ
  • Сайт

Re: установка на pipo x9s

Сообщение Alexander » 07 дек 2017, 15:04

Alexander
 
Постов: 4873
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ
  • Сайт


Вернуться в Техподдержка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2



cron

Новые и опытные пользователи 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 License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Понравилась статья? Поделить с друзьями:
  • Error while loading shared libraries libpng12 so 0
  • Error while loading shared libraries libpcre so 1
  • Error while loading shared libraries libopencl so 1
  • Error while loading shared libraries libnss3 so
  • Error while loading shared libraries libncurses so 5