LINUX.ORG.RU
ФорумAdmin

cannot open shared object file: No such file or directory

 


0

1

Я хотел установить viber через йогурт. А поскольку я особо не читаю ошибки, то не посмотрев конфликт библиотек залупил yaourt -S viber --force.

В итоге пакман ругается

pacman: error while loading shared libraries: libidn2.so.0: cannot open shared object file: No such file or directory
Видимо конфликт libcurl и libcurlcompat, потому что изначально йогурт ругнулся
ошибка: не удалось завершить транзакцию (конфликтующие файлы)
libcurl-compat: '/usr/lib/libcurl.so.4.4.0' существует в файловой системе
Обнаружены ошибки, пакеты не обновлены.
В вики сказано: Скорее всего, это означает, что при выполнении предыдущей операции pacman удалил или повредил разделяемые библиотеки, необходимые для него самого.

Чтобы выйти из этой ситуации, нужно вручную распаковать необходимые библиотеки в вашу файловую систему. Сперва определите, в каком пакете содержится требуемая библиотека, а затем найдите этот пакет в кэше pacman'a (/var/cache/pacman/pkg/). Распакуйте разделяемую библиотеку в файловую систему. Это позволит вам запустить pacman.

Теперь необходимо переустановить испорченный пакет. При этом обязательно используйте ключ --force, поскольку вы лишь распаковали системные файлы, но pacman об этом не знает. pacman корректно заменит ваш файл разделяемой библиотеки на тот, что имеется в пакете.

Вот и все. Обновите оставшуюся часть системы.

В какие директории мне надо распаковать libcurl?

не понятно какой пакет нужен, куда его распихивать и что делать с libcurl-compat. Пробовал извлекать архивы во всевозможные папки (опять бездумно), но пока тщетно

ublydok ()

Чтобы выйти из этой ситуации, нужно вручную распаковать необходимые библиотеки в вашу файловую систему. Сперва определите, в каком пакете содержится требуемая библиотека, а затем найдите этот пакет в кэше pacman'a (/var/cache/pacman/pkg/). Распакуйте разделяемую библиотеку в файловую систему. Это позволит вам запустить pacman.

Что именно из этого текста Вы не поняли?

telikan ()
Ответ на: комментарий от telikan

«распакуйте разделяемую библиотеку в файловую систему» Имеется в виду, что я должен взять пакет из Кеша либо скачав с фтп, распаковать в /usr/lib или в просто /lib или /lib64 ?

ublydok ()
Ответ на: комментарий от Samsky

Вот все эти пакеты(за исключением compat ,)распаковал в lib, lib64, /usr/lib, /usr/lib64 Все равно ничего не работает ни с ключем force, ни без него. Вообще curl-compat надо удалить, но как это сделать без менеджера пакета я не знаю

ublydok ()
Ответ на: комментарий от ublydok

Насколько вижу из этого:

pacman: error while loading shared libraries: libidn2.so.0: cannot open shared object file: No such file or directory

у тебя сломался pacman, он не может найти libidn2.so.0, который находится в пакете libidn2.

Судя по:

usr/lib/libidn2.so
usr/lib/libidn2.so.0
usr/lib/libidn2.so.0.3.3
Первые 2 думаю это симлинки.

Samsky ()
Ответ на: комментарий от Samsky

вырезал из пакета вот эти 3 файла и скопировал в /usr/lib теперь ругается что файл куцый

pacman: error while loading shared libraries: /usr/lib/libidn2.so.0: file too short
я не знаком со структурой пакета и понятия не имею что куда копируется при инсталляции

ublydok ()
Ответ на: комментарий от Samsky

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

ublydok ()
Ответ на: комментарий от ublydok

Отвечу самому себе или людям, попавшим в схожую ситуацию. Под выражением «Распакуйте разделяемую библиотеку в файловую систему» имеется в виду, что вы должны разархивировать пакет, выудить из папки lib тот файл, на который ругается pacman, и положить его в /usr/lib. Да, я тормоз.

ublydok ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.