/сбин/ldconfig.real: /usr/local/lib не является известным типом библиотеки

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

Я следовал этой инструкции на этом сайте по установке tesseract: https://github.com/tesseract-ocr/tesseract/wiki/Compiling

git clone https://github.com/tesseract-ocr/tesseract.git
cd tesseract
./autogen.sh
./configure
make
sudo make install
sudo ldconfig

Но в последней строке возникла проблема, и я получил следующие сообщения об ошибке, когда пытался выполнить ldconfig:

/sbin/ldconfig.real: /usr/local/lib не является известным типом библиотеки
/sbin/ldconfig.real: /usr/local/lib/pkgconfig не является известным типом библиотеки

Что означает эта ошибка и как я могу её исправить?

Вот содержимое /etc/ld.so.conf.d/libc.conf:

# libc стандартная конфигурация
/usr/local/lib

Да, вы не сможете скомпилировать, если ваш компоновщик не знает, где находятся ваши библиотеки. ldconfig — это утилита, которая настраивает ваши связанные библиотеки, и она ожидает, что вы укажете, где находятся ваши общие библиотеки в /etc/ld.so.conf.d/libc.conf. Проблема в том, что в этом файле конфигурации у вас указано всего ОДНО местоположение, но он говорит, что это даже не настоящий путь.

Вам нужно добавить правильные пути к вашим общим библиотекам в ld.so.conf.

Инструкции говорят, что вам нужно установить пакет leptonica-dev для наличия этих общих библиотек, поскольку то, что вы пытаетесь собрать, зависит от них для компиляции. Я предполагаю, что вы этого не сделали, так как он не может найти общие библиотеки.

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

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

Ошибка, с которой вы столкнулись, при выполнении команды ldconfig указывает на проблемы с конфигурацией вашего системы библиотек. Давайте разберемся с этой проблемой подробнее и обсудим, как ее можно решить.

Понимание ошибки

Сообщение об ошибке:

/sbin/ldconfig.real: /usr/local/lib is not a known library type
/sbin/ldconfig.real: /usr/local/lib/pkgconfig is not a known library type

означает, что утилита ldconfig не распознает указанные вами директории как легитимные пути для библиотек. Это может происходить по нескольким причинам:

  1. Некорректный файл конфигурации: Путь /usr/local/lib может быть некорректно указан в конфигурационном файле.
  2. Проблемы с правами доступа: Утилите ldconfig может быть отказано в доступе к указанным директориям.
  3. Отсутствие необходимых библиотек: Возможно, нужные для сборки зависимые библиотеки не были установлены, как упомянуто в вашем комментарии.

Как исправить проблему

  1. Проверка существования директорий: Убедитесь, что папки /usr/local/lib и /usr/local/lib/pkgconfig действительно существуют. Для этого выполните команду:

    ls -ld /usr/local/lib /usr/local/lib/pkgconfig

    Если директории отсутствуют, создайте их:

    sudo mkdir -p /usr/local/lib/pkgconfig
  2. Проверка содержимого конфигурации: Убедитесь, что файл /etc/ld.so.conf.d/libc.conf действительно содержит правильные пути и что в нём нет синтаксических ошибок. Основное содержимое, которое вам нужно, это путь к библиотекам:

    # libc default configuration
    /usr/local/lib

    Если требуется, добавьте другие пути к библиотекам, которые вы используете. Однако, если libc.conf содержит другие дополнительные пути, имеет смысл их проверить, так как возможно они могут конфликтовать.

  3. Установка зависимостей: Как упомянуто в вопросе, убедитесь, что вы установили необходимые пакеты. Например, для Tesseract требуется установка leptonica-dev, который содержит необходимые библиотеки для его работы. Установите его с помощью:

    sudo apt-get install libleptonica-dev

    После установки зависимостей попробуйте снова выполнить команду ldconfig:

    sudo ldconfig
  4. Проверка прав доступа: Убедитесь, что у вас есть необходимые права доступа к вышеуказанным директориям. Вы можете проверить права командой:

    ls -ld /usr/local/lib

    Если пользователь, под которым вы выполняете команду, не имеет доступа, измените права доступа с помощью команды chmod или chown.

Заключение

После выполнения указанных шагов проблема с ошибкой ldconfig должна быть устранена. Если ошибки продолжаются, возможно, стоит проверить содержимое других конфигурационных файлов в /etc/ld.so.conf.d/ или обратиться к документации вашей операционной системы для получения дополнительной информации о библиотечных путях. Успехов в установке Tesseract!

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

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