Поиск по сайту:

Исправить ошибку «pacman: ошибка при загрузке общих библиотек» в Arch Linux

Последние несколько дней я тщательно тестировал инструменты PIP и Pipenv в своей системе Arch Linux. Во время тестирования этих инструментов мне приходилось много раз переустанавливать и понижать версию пакетов Python2.x, Python 3.x и некоторых других пакетов зависимостей Python. В какой-то момент мой Arch Linux сломался, и pacman перестал работать. Каждый раз, когда я запускал pacman, я получал сообщение об ошибке "pacman: ошибка при загрузке общих библиотек: libidn2.so.0: невозможно открыть общий объектный файл: нет такого файла или каталога".

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

Перестали работать не только pacman, но и некоторые другие приложения, такие как pacaur, yaourt, Packer, VirtualBox and Transmission и т.д. Когда я пытаюсь открыть любое из этих приложений, я постоянно получаю это сообщение: «ошибка при загрузке общих библиотек: libidn2.so.0: невозможно открыть файл общего объекта».

Скорее всего, я удалил что-то, чего не мог вспомнить. К моему несчастью, это была моя личная система и я не хочу ее переустанавливать, потому что в ней много приложений. Таким образом, переустановка ОС и всех приложений могла занять два, а может и больше дня.

После энергичного поиска в вики Arch Linux и других форумах Linux, как сумасшедший, мне наконец удалось это исправить. Если вы когда-нибудь столкнетесь с подобной проблемой, не ищите никуда, просто загрузите исходный файл и скопируйте недостающие файлы в папку /usr/lib/. Насколько я искал в Интернете, этот метод пока кажется очень простым. Читайте дальше, чтобы узнать, как я исправил эту ошибку.

Исправить ошибку «pacman: ошибка при загрузке общих библиотек» в Arch Linux

Как я уже говорил, я продолжал получать эту ошибку - "pacman: ошибка при загрузке общих библиотек: libidn2.so.0: невозможно открыть общий объектный файл: нет такого файла или каталога" , когда я запускаю команду pacman или любые помощники AUR, такие как pacaur, Packer, yaourt, и я даже не могу открыть приложение VirtualBox и клиент передачи. Итак, настоящая проблема заключается в том, что файл "libidn2.so.0" пропал. Нам нужно это выяснить!

ls -la /usr/lib/libidn*

Пример вывода из моей системы Arch Linux:

lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so -> libidnkitlite.so.1.0.2
lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so.1 -> libidnkitlite.so.1.0.2
-rw-r--r-- 1 root root 276352 Jul 22 2013 /usr/lib/libidnkitlite.so.1.0.2
lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so -> libidnkit.so.1.0.2
lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so.1 -> libidnkit.so.1.0.2
-rw-r--r-- 1 root root 282368 Jul 22 2013 /usr/lib/libidnkit.so.1.0.2
lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so -> libidn.so.11.6.16
lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so.11 -> libidn.so.11.6.16
-rwxr-xr-x 1 root root 210872 Aug 15 19:00 /usr/lib/libidn.so.11.6.16

У меня был «libidn.so», но я не могу найти «libidn2.so.0». Поскольку pacman и любой другой менеджер пакетов не работали, невозможно установить, обновить или понизить версию пакетов из официального репозитория или локального кеша. Итак, я подумал, что единственный способ — загрузить пакет с отсутствующим файлом из Интернета, извлечь его и, наконец, скопировать отсутствующие файлы в каталог /usr/lib/. Позвольте мне создать каталог для сохранения tar-файла libdin2:

mkdir libidn
cd libidn

Найдите и загрузите последнюю версию этого пакета. Быстрый поиск в Google привел меня здесь. Извлеките файл:

tar xf libidn2-2.0.4-2-x86_64.pkg.tar.xz

Приведенная выше команда извлекла содержимое файла в каталог с именем «usr». Перейдите в папку usr/lib: (Примечание – это usr/lib, а не /usr/lib)

cd usr/lib

Наконец, скопируйте отсутствующий файл, в нашем случае это libidn2.so.0, в каталог /usr/lib/ вашей системы Arch Linux.

sudo cp libidn2.so.0 /usr/lib/

Затем я побежал:

sudo pacman -syu

Обновить Арч Linux

Вуаля! Пакман теперь работает!! Упс! О нет, подожди.. Это не сработало. Я получил эту ошибку через несколько минут.

[....]
(511/511) checking keys in keyring [######################] 100%
(511/511) checking package integrity [######################] 100%
(511/511) loading package files [######################] 100%
(511/511) checking for file conflicts [######################] 100%
error: failed to commit transaction (conflicting files)
libidn2: /usr/lib/libidn2.so.0 exists in filesystem
Errors occurred, no packages were upgraded.

Чтобы исправить это, я запустил:

sudo pacman -S libidn2 --force

Затем я снова попробовал обновить:

sudo pacman -Syu

Зафиксированный!! Теперь все хорошо. Итак, если вы когда-нибудь сталкивались с проблемой типа «ошибка при загрузке общих библиотек: .. невозможно открыть файл общего объекта: нет такого файла или каталога», один из способов исправить это — найти пакет, содержащий недостающие файлы, загрузите последнюю версию этого пакета, распакуйте его и скопируйте недостающие файлы в каталог /usr/lib/. Конечно, способов решения подобных проблем может быть много. Но это единственное рабочее решение, которое я смог найти, и я считаю, что это намного проще и быстрее. Этот трюк может сработать и в других дистрибутивах Linux.

Связанное чтение:

  • Как восстановить сломанную Arch Linux до предыдущего рабочего состояния
  • Как исправить ошибку «невозможно заблокировать базу данных» в Arch Linux
  • Как исправить ошибку «неверный или поврежденный пакет (подпись PGP)» в Arch Linux
  • Как решить проблему «Начинаем полное обновление системы… делать нечего» в Arch Linux
  • Как решить «ошибку: не удалось зафиксировать транзакцию (конфликтующие файлы)» в Arch Linux

Статьи по данной тематике