- Linux Commands For Shared Library Management & Debugging Problem
- What is a Library In Linux or UNIX?
- Linux Library Management Commands
- Important Files
- #1: ldconfig command
- Examples
- Troubleshooting Chrooted Jails
- Rootkits
- Common errors
- Can’t find library xyz Error
- #2: ldd command
- Библиотеки Linux
- Что такое библиотеки?
- Как получить информацию о библиотеках?
- Основные библиотеки
- Библиотеки кодеков
- Звуковые библиотеки
- Работа с архивами
- Графические библиотеки
- Работа с текстом
- Безопасность
- Библиотеки драйверов
- Эмуляция
- Выводы
Linux Commands For Shared Library Management & Debugging Problem
I f you are a developer, you will re-use code provided by others. Usually /lib, /lib64, /usr/local/lib, and other directories stores various shared libraries. You can write your own program using these shared libraries. As a sys admin you need to manage and install these shared libraries. Use the following commands for shared libraries management, security, and debugging problems.
What is a Library In Linux or UNIX?
In Linux or UNIX like operating system, a library is noting but a collection of resources such as subroutines / functions, classes, values or type specifications. There are two types of libraries:
- Static libraries – All lib*.a fills are included into executables that use their functions. For example you can run a sendmail binary in chrooted jail using statically liked libs.
- Dynamic libraries or linking [ also known as DSO (dynamic shared object)] – All lib*.so* files are not copied into executables. The executable will automatically load the libraries using ld.so or ld-linux.so.
Linux Library Management Commands
- ldconfig : Updates the necessary links for the run time link bindings.
- ldd : Tells what libraries a given program needs to run.
- ltrace : A library call tracer.
- ld.so/ld-linux.so: Dynamic linker/loader.
Important Files
As a sys admin you should be aware of important files related to shared libraries:
- /lib/ld-linux.so.* : Execution time linker/loader.
- /etc/ld.so.conf : File containing a list of colon, space, tab, newline, or comma separated directories in which to search for libraries.
- /etc/ld.so.cache : File containing an ordered list of libraries found in the directories specified in /etc/ld.so.conf. This file is not in human readable format, and is not intended to be edited. This file is created by ldconfig command.
- lib*.so.version : Shared libraries stores in /lib, /usr/lib, /usr/lib64, /lib64, /usr/local/lib directories.
#1: ldconfig command
You need to use the ldconfig command to create, update, and remove the necessary links and cache (for use by the run-time linker, ld.so) to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/usr/lib, /lib64 and /lib). The ldconfig command checks the header and file names of the libraries it encounters when determining which versions should have their links updated. This command also creates a file called /etc/ld.so.cache which is used to speed up linking.
Examples
In this example, you’ve installed a new set of shared libraries at /usr/local/lib/:
$ ls -l /usr/local/lib/
Sample outputs:
Now when you run an app related to libGeoIP.so, you will get an error about missing library. You need to run ldconfig command manually to link libraries by passing them as command line arguments with the -l switch:
# ldconfig -l /path/to/lib/our.new.lib.so
Another recommended options for sys admin is to create a file called /etc/ld.so.conf.d/geoip.conf as follows:
Now just run ldconfig to update the cache:
# ldconfig
To verify new libs or to look for a linked library, enter:
# ldconfig -v
# ldconfig -v | grep -i geoip
Sample outputs:
Troubleshooting Chrooted Jails
You can print the current cache with the -p option:
# ldconfig -p
Putting web server such as Apache / Nginx / Lighttpd in a chroot jail minimizes the damage done by a potential break-in by isolating the web server to a small section of the filesystem. It is also necessary to copy all files required by Apache inside the filesystem rooted at /jail/ directory , including web server binaries, shared Libraries, modules, configuration files, and php/perl/html web pages. You need to also copy /etc/
Rootkits
A rootkit is a program (or combination of several programs) designed to take fundamental control of a computer system, without authorization by the system’s owners and legitimate managers. Usually, rootkit use /lib, /lib64, /usr/local/lib directories to hide itself from real root users. You can use ldconfig command to view all the cache of all shared libraries and unwanted programs:
# /sbin/ldconfig -p | less
You can also use various tools to detect rootkits under Linux.
Common errors
You may see the errors as follows:
Dynamic linker error in foo
Can’t map cache file cache-file
Cache file cache-file foo
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
All of the above errors means the linker cache file /etc/ld.so.cache is corrupt or does not exists. To fix these errors simply run the ldconfig command as follows:
# ldconfig
Can’t find library xyz Error
The executable required a dynamically linked library that ld.so or ld-linux.so cannot find. It means a library called xyz needed by the program called foo not installed or path is not set. To fix this problem install xyz library and set path in /etc/ld.so.conf file or create a file in /etc/ld.so.conf.d/ directory.
#2: ldd command
ldd (List Dynamic Dependencies) is a Unix and Linux program to display the shared libraries required by each program. This tools is required to build and run various server programs in a chroot jail. A typical example is as follows to list the Apache server shared libraries, enter:
# ldd /usr/sbin/httpd
Sample outputs:
Now, you can copy all those libs one by one to /jail directory
Источник
Библиотеки Linux
Все мы привыкли пользоваться программами в любой операционной системе для решения своих задач. Но за функциональностью программ стоит еще одна вещь, с которой мы редко встречаемся при обычной работе с компьютером. Это библиотеки, которые содержат общий набор функций и возможностей, используемых программами. Например, большинство программ, написанных на Си, используют стандартную библиотеку Си, в которой содержатся все основные возможности взаимодействия с системой.
У каждой программы есть свой набор библиотек, которые должны быть в системе чтобы она смогла работать. Иначе бы программистам пришлось заново изобретать различные алгоритмы, писать много кода и разработка программ занимала бы в разы больше времени. В этой статье мы собрали основные библиотеки Linux, а также их предназначение. Эта информация поможет вам лучше освоиться в системе.
Что такое библиотеки?
Как я уже говорил выше — библиотеки реализуют общие возможности, которые потом используются программами. Если говорить просто, то библиотека — это набор функций, каждую из которых можно использовать в любой программе. Например, если программе нужно вывести строку на экран, она не будет лезть прямо в буфер видеокарты, а использует функцию из стандартной библиотеки.
Библиотеки делятся на два типа — динамические и статические. Статические библиотеки linux подключаются на этапе сборки программы, а динамические — во время выполнения и они общие для нескольких программ. Нас будут интересовать именно динамические библиотеки linux. Они находятся в папках /lib, /lib64, /usr/lib, /usr/lib/x86_64-linux-gnu. Каждая библиотека имеет расширение .so, за которым следует номер версии. Этот номер увеличивается каждый раз, когда разработчики вносят серьезные изменения. Такой подход необходим для того, чтобы сохранить совместимость для программ, использующих старые версии. Например, в системе может быть две библиотеки libfuse.so.0 и libfuse.so.1. Далее мы рассмотрим основные библиотеки и их предназначение.
Как получить информацию о библиотеках?
Перед тем как перейти к рассмотрению самих библиотек, вам, наверное, будет интересно, как получить информацию о них и узнать где они находятся в вашей системе. Библиотеки Linux могут быть размещены в различных каталогах, в зависимости от дистрибутива, но посмотреть эти каталоги можно, выполнив:
Во всех перечисленных здесь каталогах находятся статические и динамически библиотеки Linux:
ls -l /lib/x86_64-linux-gnu/
Информацию о зависимостях каждой библиотеки вы можете посмотреть командой ldd:
А еще можно узнать какому пакету принадлежит библиотека в Ubuntu:
dpkg -S /lib/x86_64-linux-gnu/ld-2.24.so
Как видите, библиотека ld.so принадлежит пакету libc6, точнее она входит в набор инструментов Си. Более подробно, о том, как устанавливать новые библиотеки и решать проблемы с ними, описано в статье библиотеки Ubuntu.
Основные библиотеки
Это библиотеки основных языков программирования, которые содержат базовую функциональность для взаимодействия с системой.
- libanl.so — библиотека работы с DNS;
- libc.a — основная статическая библиотека языка Си;
- libdl.a — библиотека, отвечающая за загрузку других библиотек во время запуска программы;
- libnsl.so — работа со службой NIS;
- libstdc++.so — стандартная библиотека C++;
- libutil.so — реализует основные часто используемые функции;
- libelf.so — библиотека для работы с бинарными файлами ELF;
- libevent.so — библиотека с реализацией механизма вызова функций после события;
- libgnutls.so — библиотека с основными методами и возможностями, используемыми в стандартных утилитах Linux;
- ld-linux.so — главная библиотека, она собрана в виде статической и не имеет зависимостей. Загружает другие библиотеки и исполняемые файлы. Вы можете вызвать эту библиотеку как программу и передать ей адрес исполняемого файла для запуска.
Библиотеки кодеков
Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:
- liba52.so — свободный декодер ATSC A/52;
- libavfilter6.so — библиотека фильтров ffmpeg;
- libavcodec57.so — библиотека кодеков ffmpeg;
- libavformat57.so — библиотека форматов ffmpeg;
- libavutil55.so — библиотека дополнительных функций ffmpeg;
- libdv.so — программный кодек для DV;
- libmad.so — MPEG аудио декодер;
- libmpeg2.so — потоковый декодер видео данных;
- libmpg123.so — библиотека консольного плеера mpg123;
- libwebp.so — декодирование формата Webp;
- libxvidcore.so — медиа кодек MPEG-4.
Звуковые библиотеки
- libao.so — библиотека проигрывания звука с простым интерфейсом;
- libasound.so — библиотека взаимодействия со звуковой подсистемой ALSA;
- libaudio2.so — библиотека работы со звуком, входит в состав ALSA;
- libespeak.so — библиотека синтеза речи;
- libpulse.so — библиотека с основными методами PulseAudio;
Работа с архивами
- libarchive.so — библиотека для работы с архивами различных форматов;
- liblzma.so — работа с архивами LZMA.
Графические библиотеки
- libart.so — библиотека с реализацией функций для работы с 3d графикой;
- libaa.so — библиотека ASCII графики;
- libgtk-3.so — набор методов графического фреймворка GTK 3;
- libgd.so — базовые функции работы с графикой и рисования;
- libgif.so — работа с форматом изображений Gif;
- libjpeg.so — работа с изображениями Jpeg;
- libglapi.so — свободная реализация методов для работы с OpenGL;
- libgtk-x11-2.0.so — набор методов библиотеки GTK 2;
- libwx_baseu.so, libwx_baseu_net-3.0.so и другие — набор библиотек фремворка создания графических приложений WX;
- libX11.so — основные методы и функции X сервера;
- libncurses.so — одна из самых популярных библиотек псевдографики;
- libQtGui.so, libQt5Svg.so, libQt5Widgets.so и другие — библиотеки фреймворка разработки графических приложений Qt.
Работа с текстом
- libaspell.so — библиотека проверки орфографии;
- libfreetype.so — библиотека отрисовки шрифтов;
- libharfbuzz.so — библиотека обработки символов Unicode;
- libxml2.so — библиотека разбора XML;
- libyaml-0.so — библиотека разбора Yaml.
Безопасность
- libcrack.so — библиотека с реализацией методов перебора паролей для проверки их надежности;
- libcrypt.so — библиотека, отвечающая за шифрование;
- libssl3.so — библиотека шифрования SSLv3;
- libapparmor.so — библиотека управления системой безопасности AppArrmor;
- libaudit.so — библиотека слежения за состоянием системы и регистрации событий.
Библиотеки драйверов
- libcups.so — библиотека работы с принтером;
- libfuse.so — библиотека организации виртуальных файловых систем;
- libgphoto2.so — библиотека взаимодействия с камерами по USB;
- libsensors.so — используется для получения информации от датчиков на материнской плате;
- libudisks2.so — библиотека usisks, которая отвечает за автоматическое монтирование и обнаружение подключенных устройств;
- libv4l1.so — библиотека работы с веб-камерами;
- libpci.so — библиотека работы с PCI устройствами;
- libusb-1.0.so — библиотека управления USB;
- libdrm.so — библиотека с общими возможностями Direct Rendering Manager, отрисовки графики с помощью видеокарты;
- libdrm_amdgpu.so — DRM для драйвера AMDGPU;
- libdrm_intel.so — DRM для карт Intel;
- libdrm_nouveau.so — свободный DRM для видеокарт Nvidia;
- libresolv.so — библиотека получения IP адреса по имени хоста;
- libpcap.so — библиотека анализа и захвата сетевых пакетов;
- libproxy.so — настройка и управление прокси;
Эмуляция
- libSDL.so — библиотека эмуляции загрузки компьютера и базовых возможностей BIOS;
- libwine.so — библиотека прослойки для запуска приложений Windows в Linux.
- libvirt.so — библиотека управления KVM;
Выводы
В этой статье мы собрали основные библиотеки Linux, которые имеют наибольшее значение для работы операционной системы. Конечно, невозможно перечислить здесь абсолютно все библиотеки, потому что их очень много. Надеюсь эта информация была полезной для вас.
На завершение урок про библиотеки Linux:
Источник