Вопрос или проблема
Я следовал этой инструкции на этом сайте по установке 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
не распознает указанные вами директории как легитимные пути для библиотек. Это может происходить по нескольким причинам:
- Некорректный файл конфигурации: Путь
/usr/local/lib
может быть некорректно указан в конфигурационном файле. - Проблемы с правами доступа: Утилите
ldconfig
может быть отказано в доступе к указанным директориям. - Отсутствие необходимых библиотек: Возможно, нужные для сборки зависимые библиотеки не были установлены, как упомянуто в вашем комментарии.
Как исправить проблему
-
Проверка существования директорий: Убедитесь, что папки
/usr/local/lib
и/usr/local/lib/pkgconfig
действительно существуют. Для этого выполните команду:ls -ld /usr/local/lib /usr/local/lib/pkgconfig
Если директории отсутствуют, создайте их:
sudo mkdir -p /usr/local/lib/pkgconfig
-
Проверка содержимого конфигурации: Убедитесь, что файл
/etc/ld.so.conf.d/libc.conf
действительно содержит правильные пути и что в нём нет синтаксических ошибок. Основное содержимое, которое вам нужно, это путь к библиотекам:# libc default configuration /usr/local/lib
Если требуется, добавьте другие пути к библиотекам, которые вы используете. Однако, если
libc.conf
содержит другие дополнительные пути, имеет смысл их проверить, так как возможно они могут конфликтовать. -
Установка зависимостей: Как упомянуто в вопросе, убедитесь, что вы установили необходимые пакеты. Например, для Tesseract требуется установка
leptonica-dev
, который содержит необходимые библиотеки для его работы. Установите его с помощью:sudo apt-get install libleptonica-dev
После установки зависимостей попробуйте снова выполнить команду
ldconfig
:sudo ldconfig
-
Проверка прав доступа: Убедитесь, что у вас есть необходимые права доступа к вышеуказанным директориям. Вы можете проверить права командой:
ls -ld /usr/local/lib
Если пользователь, под которым вы выполняете команду, не имеет доступа, измените права доступа с помощью команды
chmod
илиchown
.
Заключение
После выполнения указанных шагов проблема с ошибкой ldconfig
должна быть устранена. Если ошибки продолжаются, возможно, стоит проверить содержимое других конфигурационных файлов в /etc/ld.so.conf.d/
или обратиться к документации вашей операционной системы для получения дополнительной информации о библиотечных путях. Успехов в установке Tesseract!