Команда ldconfig предназначена для вызова одноименной утилиты, осуществляющей формирование кэша информации о новейших версиях разделяемых библиотек и создание символьных ссылок на них для последующей корректной работы динамического линковщика ld.so. Разделяемые библиотеки обычно содержат реализации функций, которые необходимы для корректной работы приложений или других разделяемых библиотек. Разделяемые библиотеки (*.so) являются полным аналогом динамических библиотек (*.dll) из Windows. Утилита использует файл конфигурации /etc/ld.so.conf для чтения списка нестандартных директорий с разделяемыми библиотеками (стандартными являются /usr/lib и /lib), а также получения дополнительной информации о некоторых библиотеках. Кроме того, она обрабатывает заголовочные файлы библиотек и их имена для создания символьных ссылок. Файл кэша динамического линковщика имеет имя /etc/ld.so.cache, следовательно, для его модификации требуются права суперпользователя. Единственным вариантом продуктивного использования утилиты без прав суперпользователя является вариант с указанием альтернативной директории с разделяемыми библиотеками для создания символьных ссылок без изменения системного кэша.
Базовый синтаксис команды выглядит следующим образом:
# lddconfig [параметры]
Утилита поддерживает параметр -v, позволяющий выводить дополнительную информацию об именах обрабатываемых директорий и именах создаваемых символьных ссылок, параметр -n, позволяющий обрабатывать лишь файлы разделяемых библиотек в указанных директориях, параметр -N позволяющий не обновлять системный кэш динамического линковщика, а ограничиться лишь созданием символьных ссылок, параметр -X, позволяющий не создавать символьных ссылок, а ограничиться лишь обновлением системного кэша динамического линковщика, параметр -f, позволяющий использовать указанный файл конфигурации утилиты вместо /etc/ld.so.conf, параметр -C, позволяющий использовать указанный файл системного кэша динамического линковщика вместо /etc/ld.so.cache, параметр -r, позволяющий изменить корневую директорию, параметр -p для отображения содержимого системного кэша динамического линковщика, а также параметр -c для указания формата системного кэша динамического линковщика (old, new, compat). В большинстве случаев вам не придется использовать данных параметров.
Для вывода содержимого системного кэша динамического линковщика, следует использовать параметр -p утилиты.
# ldconfig -p
1330 библиотек найдено в кэше «/etc/ld.so.cache»
libzvbi.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzvbi.so.0
libzvbi-chains.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzvbi-chains.so.0
libzstd.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libzstd.so.1
…
Как видно, системный кэш содержит информацию о 1330 библиотеках, причем в кэше имеется информация о полных путях к библиотекам, их архитектурах и используемых версиях стандартной библиотеки языка C (libc).
Для обновления содержимого системного кэша динамического линковщика без создания символьных ссылок следует использовать параметр -X и иметь права суперпользователя. Также для наглядности можно воспользоваться параметром -v.
# ldconfig -X -v
/lib/x86_64-linux-gnu:
libsepol.so.1 -> libsepol.so.1
libreadline.so.8 -> libreadline.so.8.0
libnss_mdns4.so.2 -> libnss_mdns4.so.2
…
Утилита выведет список всех разделяемых библиотек, найденных в системе. Данная операция может исполняться при повреждении системного файла кэша динамического линковщика.
Для обновления ссылок на разделяемые библиотеки достаточно использовать параметр -N (для обработки всех системных директорий) или параметр -n (для указания конкретной директории).
# ldconfig -v -n /lib
/lib:
libdmraid.so.1.0.0.rc16 -> libdmraid.so.1.0.0.rc16
libhandle.so.1 -> libhandle.so.1.0.3
В данном случае были созданы символьные ссылки для двух разделяемых библиотек.