libreadline.so.6: не удается открыть общий объектный файл. Установлен libreadline-7 и dev

Вопрос или проблема

Я получаю следующую ошибку при попытке запустить vtysh для некоторых сетевых симуляций

vtysh: ошибка при загрузке разделяемых библиотек: libreadline.so.6: невозможно открыть файл общего объекта: Нет такого файла или каталога

В настоящее время у меня установлены libreadline-dev и libreadline-7, и я создал символическую ссылку на libreadline.so.7 по пути /lib/x86_64-linux-gnu/libreadline.so.6, но это не помогло. Я предполагаю, что возможно, он ищет другой путь, но я не уверен, как подойти к устранению проблем такого рода.


С предложениями ниже не повезло. После компиляции readline6.3 из исходного кода, как предложено ниже, мой вывод от ldconfig -v | grep readline таков:

/sbin/ldconfig.real: Невозможно найти /usr/local/lib/x86_64-linux-gnu: Нет такого файла или каталога
/sbin/ldconfig.real: Путь `/lib/x86_64-linux-gnu' указан более одного раза
/sbin/ldconfig.real: Путь `/usr/lib/x86_64-linux-gnu' указан более одного раза
    libreadline.so.6 -> libreadline.so.6.3
    libreadline.so.7 -> libreadline.so.7.0
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.27.so является динамическим линковщиком, игнорируется

    libguilereadline-v-18.so.18 -> libguilereadline-v-18.so.18.0.0
/home/gdc/Desktop/readline-6.3:
/sbin/ldconfig.real: /lib32/ld-2.27.so является динамическим линковщиком, игнорируется

Поскольку создание символической ссылки не сработало, вашей единственной альтернативой будет компиляция кода из исходников и добавление его в ваше окружение. Вы можете получить исходный код для readline-6.3 здесь:

http://ftp.gnu.org/gnu/readline/

После компиляции создайте файл /etc/ld.so.conf.d/x86_64_readline-gnu.conf и введите строку /path/to/readline/lib в зависимости от того, где вы его скомпилировали. Затем выполните команду:

ldconfig -v | grep readline

Вы увидите, что libreadline.so.6 присутствует в вашем окружении, и vtysh будет работать без проблем.

Ответ или решение

Ошибка, с которой вы столкнулись, указывает на то, что программа vtysh не может найти библиотеку libreadline.so.6. Эта проблема может возникнуть по нескольким причинам, и мы рассмотрим возможные пути её решения в нашей статье.

Понимание проблемы

Когда вы видите сообщение об ошибке, такое как libreadline.so.6: cannot open shared object file: No such file or directory, это означает, что операционная система не может найти динамическую библиотеку, необходимую для запуска программы. Вы уже установили libreadline-dev и libreadline-7, но при этом vtysh требует именно libreadline.so.6, которая не была установлена в вашей системе.

Ваша попытка создать символическую ссылку на libreadline.so.7 в каталоге /lib/x86_64-linux-gnu может быть недостаточной, поскольку не все программы корректно обрабатывают обновлённые ссылки, особенно если ожидается конкретная версия библиотеки.

Шаги для устранения ошибки

  1. Установка библиотеки версии 6: Если vtysh был скомпилирован с привязкой к libreadline.so.6, самым надёжным решением будет установить именно эту версию библиотеки. Вы можете скачать исходный код для readline-6.3 с официального сайта GNU. После загрузки следуйте инструкциям для компиляции:

    tar -zxvf readline-6.3.tar.gz
    cd readline-6.3
    ./configure
    make
    sudo make install
  2. Проверка пути библиотеки: После установки корректной версии библиотеки, убедитесь, что её путь указан в конфигурации динамического загрузчика. Для этого создайте файл /etc/ld.so.conf.d/readline.conf с путём, где была установлена библиотека:

    echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/readline.conf

    Затем выполните команду ldconfig, чтобы обновить кеш динамических ссылок:

    sudo ldconfig
  3. Проверка установленных библиотек: После выполнения вышеуказанных шагов, проверьте наличие libreadline.so.6:

    ldconfig -v | grep readline

    Это должно вернуть информацию о библиотеке libreadline.so.6, если она была установлена правильно.

  4. Обновление переменной окружения: Убедитесь, что переменная окружения LD_LIBRARY_PATH настроена корректно, особенно если библиотеки были установлены в нестандартные пути. Вы можете добавить путь к библиотекам в вашем файле ~/.bashrc:

    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    После этого выполните команду source ~/.bashrc, чтобы изменения вступили в силу.

  5. Полная переустановка: Если все описанные шаги не помогли, рассмотрите возможность полного удаления пакетов libreadline и последующей их переустановки:

    sudo apt-get remove --purge libreadline7 libreadline-dev
    sudo apt-get install libreadline6-dev

Заключение

Следуя указанным шагам, вы должны устранить ошибку, связанную с отсутствием libreadline.so.6. Часто такие проблемы возникают из-за несовместимости версий библиотек или неправильной конфигурации системы. Обязательно внимательно проверьте все действия, которые вы совершаете, и при необходимости обращайтесь к документации. Если возникнут сложности, не стесняйтесь обращаться за помощью к сообществу разработчиков.

Оцените материал
Добавить комментарий

Капча загружается...