SystemdDoctor
служба не работает файлы библиотеки

Could not open file и cannot open shared object file

Сообщения про невозможность открыть файл делятся на две группы: отсутствующие данные (файл настроек, сертификат, база) и отсутствующие библиотеки. Вторые узнаются по строке cannot open shared object file и разбираются иначе.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Отсутствует общая библиотека

    Программа собрана с зависимостью, которой нет в системе. Частая ситуация при ручной установке и при переносе сборки между дистрибутивами.

  2. Библиотека есть, но в нестандартном каталоге

    Программа ищет библиотеки в стандартных путях. Своя библиотека в /opt без настройки не находится.

  3. Файла данных нет или он недоступен

    Обычная ситуация: путь неверен, файл удалён, прав не хватает, путь скрыт изоляцией службы.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Недостающие библиотеки, если сообщение про них.

ldd /путь/к/программе | grep "not found"

Точный путь, который не удалось открыть.

journalctl -u myapp.service -n 30 --no-pager | grep -iE "cannot open|could not open"

Права и наличие на каждом уровне пути.

namei -l /путь/из/сообщения

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Отсутствует общая библиотека
Почему происходит
Программа собрана с зависимостью, которой нет в системе. Частая ситуация при ручной установке и при переносе сборки между дистрибутивами.
Как проверить
Посмотрите недостающие библиотеки.
ldd /usr/local/bin/myapp | grep "not found"
Как исправить
Установите пакет с нужной библиотекой или соберите программу под этот дистрибутив.
2. Библиотека есть, но в нестандартном каталоге
Почему происходит
Программа ищет библиотеки в стандартных путях. Своя библиотека в /opt без настройки не находится.
Как проверить
Посмотрите настроенные пути и содержимое каталога.
cat /etc/ld.so.conf.d/*.conf 2>/dev/null | head
ls -l /opt/myapp/lib/
Как исправить
Добавьте каталог в настройки загрузчика библиотек и обновите кеш. Переменную окружения с путями лучше задавать в unit-файле, а не в профиле.
echo "/opt/myapp/lib" | sudo tee /etc/ld.so.conf.d/myapp.conf && sudo ldconfig
3. Файла данных нет или он недоступен
Почему происходит
Обычная ситуация: путь неверен, файл удалён, прав не хватает, путь скрыт изоляцией службы.
Как проверить
Посмотрите путь из сообщения целиком.
namei -l /путь/из/сообщения
Как исправить
Создайте файл, исправьте путь или права. При включённой изоляции путь нужно разрешить в unit-файле.

Пример вывода

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

myapp[4600]: /usr/local/bin/myapp: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
systemd[1]: myapp.service: Main process exited, code=exited, status=127

Связанные ошибки

Источники

  • ld.so(8): порядок поиска библиотек документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено удалением библиотеки, от которой зависит программа.
    собственная проверка, systemd 255
    сверено 15 сентября 2026