diff options
Diffstat (limited to 'lfs-12.2-sysv/chapter08/glibc.html')
-rw-r--r-- | lfs-12.2-sysv/chapter08/glibc.html | 1315 |
1 files changed, 1315 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter08/glibc.html b/lfs-12.2-sysv/chapter08/glibc.html new file mode 100644 index 0000000..cf09649 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/glibc.html @@ -0,0 +1,1315 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <title> + 8.5. Glibc-2.40 + </title> + <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> + <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> + <link rel="stylesheet" href="../stylesheets/lfs-print.css" type= + "text/css" media="print" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + </head> + <body class="lfs" id="lfs-12.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Глава 8. Установка базового системного программного обеспечения + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="iana-etc.html" title= + "Iana-Etc-20240806">Пред.</a> + <p> + Iana-Etc-20240806 + </p> + </li> + <li class="next"> + <a accesskey="n" href="zlib.html" title="Zlib-1.3.1">След.</a> + <p> + Zlib-1.3.1 + </p> + </li> + <li class="up"> + <a accesskey="u" href="chapter08.html" title= + "Глава 8. Установка базового системного программного обеспечения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ch-system-glibc" name="ch-system-glibc"></a>8.5. Glibc-2.40 + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска в + каталогах, открытия и закрытия файлов, чтения и записи файлов, + обработки строк, сопоставления с образцом, арифметики и так далее + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время сборки:</strong> + <span class="segbody">12 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">3.1 GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + 8.5.1. Установка пакета Glibc + </h2> + <p> + Некоторые программы Glibc используют не совместимый с FHS каталог + <code class="filename">/var/db</code> для хранения своих данных во + время выполнения. Примените следующий патч, чтобы эти программы + хранили свои данные в каталогах, совместимых с FHS: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../glibc-2.40-fhs-1.patch</kbd></pre> + <p> + Документация Glibc рекомендует выполнять компиляцию в отдельном + каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Убедитесь, что утилиты <span class= + "command"><strong>ldconfig</strong></span> и <span class= + "command"><strong>sln</strong></span> будут установлены в + <code class="filename">/usr/sbin</code>: + </p> + <pre class="userinput"><kbd class= + "command">echo "rootsbindir=/usr/sbin" > configparms</kbd></pre> + <p> + Подготовьте Glibc к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=/usr \ + --disable-werror \ + --enable-kernel=4.19 \ + --enable-stack-protector=strong \ + --disable-nscd \ + libc_cv_slibdir=/usr/lib</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-werror</code></em></span> + </dt> + <dd> + <p> + Отключает параметр -Werror, передаваемый GCC. Это необходимо + для запуска набора тестов. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-kernel=4.19</code></em></span> + </dt> + <dd> + <p> + Этот параметр сообщает системе сборки, что Glibc может + использоваться с ядрами старше 4.19. Это значение + используется для создание обходных путей на случай, если + системный вызов, представленный в более поздней версии, + нельзя будет использовать. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-stack-protector=strong</code></em></span> + </dt> + <dd> + <p> + Этот параметр повышает безопасность системы за счет + добавления дополнительного кода для проверки переполнения + буфера. Обратите внимание, что Glibc всегда явно + переопределяет параметры GCC по умолчанию, поэтому необходимо + всегда указывать эту опцию, несмотря на то, что мы уже + указали <code class="option">--enable-default-ssp</code> для + GCC. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-nscd</code></em></span> + </dt> + <dd> + <p> + Параметр отключает сборку демона кэша службы имен, который + больше не используется. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>libc_cv_slibdir=/usr/lib</code></em></span> + </dt> + <dd> + <p> + Эта переменная устанавливает правильную библиотеку для всей + системы. Мы не хотим, чтобы использовалась lib64 + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <div class="admon important"> + <img alt="[Важно]" src="../images/important.png" /> + <h3> + Важно + </h3> + <p> + В этом разделе набор тестов для Glibc считается критически + важным. Ни в коем случае не пропускайте его. + </p> + </div> + <p> + Как правило, несколько тестов не проходят. Ошибки тестирования, + перечисленные ниже, можно игнорировать. + </p> + <pre class="userinput"><kbd class="command">make check</kbd></pre> + <p> + Вы можете увидеть, что ряд тестов завершились неудачей. Набор + тестов Glibc в некоторой степени зависит от хост-системы. Несколько + ошибок из более чем 5000 тестов можно игнорировать. Список наиболее + распространенных проблем последних версий LFS: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Известно, что <span class= + "emphasis"><em>io/tst-lchmod</em></span> не работает в среде + chroot LFS. + </p> + </li> + <li class="listitem"> + <p> + Известно, что некоторые тесты, например <span class= + "emphasis"><em>nss/tst-nss-files-hosts-multi</em></span> и + <span class= + "emphasis"><em>nptl/tst-thread-affinity*</em></span> + завершаются неудачей из-за тайм-аута (особенно когда система + работает относительно медленно и/или набор тестов запущен в + несколько потоков). Эти тесты могут быть идентифицированы с + помощью следующей команды: + </p> + <pre class="userinput"><kbd class= + "command">grep "Timed out" $(find -name \*.out)</kbd></pre> + <p> + Можно повторно запустить отдельный тест, увеличив таймаут с + помощью команды <span class= + "command"><strong>TIMEOUTFACTOR=<em class= + "replaceable"><code><factor></code></em> make test + t=<em class="replaceable"><code><test + name></code></em></strong></span>. Например, <span class= + "command"><strong>TIMEOUTFACTOR=10 make test + t=nss/tst-nss-files-hosts-multi</strong></span> перезапустит + <span class= + "emphasis"><em>nss/tst-nss-files-hosts-multi</em></span>, + увеличив начальный таймаут в 10 раз. + </p> + </li> + <li class="listitem"> + <p> + Кроме того, некоторые тесты могут завершиться неудачно при + использовании относительно старой модели процессора + (например, <span class= + "emphasis"><em>elf/tst-cpu-features-cpuinfo</em></span>) или + версии ядра хоста (например, <span class= + "emphasis"><em>stdlib/tst-arc4random-thread</em></span>). + </p> + </li> + </ul> + </div> + <p> + На этапе установки Glibc будет жаловаться на отсутствие файла + <code class="filename">/etc/ld.so.conf</code>, хотя это безобидное + сообщение, предотвратить его появление можно с помощью команды: + </p> + <pre class="userinput"><kbd class= + "command">touch /etc/ld.so.conf</kbd></pre> + <p> + Исправьте Makefile, чтобы пропустить устаревшую проверку + работоспособности, которая завершается неудачей в современной + конфигурации Glibc: + </p> + <pre class="userinput"><kbd class= + "command">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</kbd></pre> + <div class="admon important"> + <img alt="[Важно]" src="../images/important.png" /> + <h3> + Важно + </h3> + <p> + При обновлении Glibc до новой минорной версии (например, с + Glibc-2.36 до Glibc-2.40) в работающей системе LFS вам необходимо + принять некоторые дополнительные меры предосторожности, чтобы + избежать поломки системы: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Обновление Glibc в системе LFS до версии 11.0 не + поддерживается. Пересоберите LFS, если вы используете такую + старую систему, но вам нужна более новая Glibc. + </p> + </li> + <li class="listitem"> + <p> + При обновлении системы LFS до версии 12.0 установите + <span class="application">Libxcrypt</span> следуя + инструкции <a class="xref" href="libxcrypt.html" title= + "8.27. Libxcrypt-4.4.36">Раздел 8.27, + «Libxcrypt-4.4.36.»</a>. В дополнение к обычной установке + <span class="application">Libxcrypt</span>, <span class= + "bold"><strong>вы ДОЛЖНЫ следовать примечанию со страницы + Libxcrypt, чтобы установить <code class= + "filename">libcrypt.so.1*</code> (заменив <code class= + "filename">libcrypt.so.1</code> из предыдущей установки + Glibc)</strong></span>. + </p> + </li> + <li class="listitem"> + <p> + При обновлении системы LFS до версии 12.1 удалите программу + <span class="command"><strong>nscd</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">rm -f /usr/sbin/nscd</kbd></pre> + </li> + <li class="listitem"> + <p> + Обновите ядро и перезагрузитесь, если оно старше 4.19 + (проверьте текущую версию с помощью <span class= + "command"><strong>uname -r</strong></span>) или, если вы + хотите обновить имеющееся ядро, выполните действия из + <a class="xref" href="../chapter10/kernel.html" title= + "10.3. Linux-6.10.5">Раздел 10.3, «Linux-6.10.5.»</a> + </p> + </li> + <li class="listitem"> + <p> + Обновите заголовочные файлы API ядра, если они старше 4.19 + (проверьте текущую версию с помощью <span class= + "command"><strong>cat + /usr/include/linux/version.h</strong></span>) или, если вы + просто хотите обновить их, следуйте <a class="xref" href= + "../chapter05/linux-headers.html" title= + "5.4. Заголовочные файлы Linux-6.10.5 API">Раздел 5.4, + «Заголовочные файлы Linux-6.10.5 API»</a> (но удалив + <code class="envar">$LFS</code> из команды <span class= + "command"><strong>cp</strong></span>). + </p> + </li> + <li class="listitem"> + <p> + Выполните установку <code class="envar">DESTDIR</code> и + обновите общие библиотеки Glibc в системе с помощью одной + команды <span class= + "command"><strong>install</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$PWD/dest install +install -vm755 dest/usr/lib/*.so.* /usr/lib</kbd></pre> + </li> + </ul> + </div> + <p> + Крайне важно строго следовать описанным выше шагам, если вы не + совсем понимаете, что делаете. <span class="bold"><strong>Любое + неожиданное отклонение может сделать систему полностью + непригодной для использования. ВЫ ПРЕДУПРЕЖДЕНЫ.</strong></span> + </p> + <p> + Затем продолжайте выполнять команды <span class= + "command"><strong>make install</strong></span>, <span class= + "command"><strong>sed</strong></span> для <code class= + "filename">/usr/bin/ldd</code> и команды для установки локалей. + Как только они будут выполнены, перезагрузите систему. + </p> + </div> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install</kbd></pre> + <p> + Исправьте жестко заданный путь к исполняемому загрузчику в скрипте + <span class="command"><strong>ldd</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</kbd></pre> + <p> + Затем установите локали, которые дадут возможность системе отвечать + на разных языках. Ни одна из локалей не требуется системе, но если + некоторые из них отсутствуют, то наборы тестов ряда пакетов будут + пропускать важные тестовые сценарии. + </p> + <p> + Отдельные локали можно установить с помощью программы <span class= + "command"><strong>localedef</strong></span>. Например, вторая + команда <span class="command"><strong>localedef</strong></span> + приведенная ниже, объединяет определение независимой от набора + символов локали <code class= + "filename">/usr/share/i18n/locales/cs_CZ</code> с набором символов + <code class="filename">/usr/share/i18n/charmaps/UTF-8.gz</code> и + добавляет результат в файл <code class= + "filename">/usr/lib/locale/locale-archive</code>. Следующие + инструкции установят минимальный набор локалей, необходимый для + оптимального охвата тестов + </p> + <pre class="userinput"><kbd class= + "command">localedef -i C -f UTF-8 C.UTF-8 +localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8 +localedef -i de_DE -f ISO-8859-1 de_DE +localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro +localedef -i de_DE -f UTF-8 de_DE.UTF-8 +localedef -i el_GR -f ISO-8859-7 el_GR +localedef -i en_GB -f ISO-8859-1 en_GB +localedef -i en_GB -f UTF-8 en_GB.UTF-8 +localedef -i en_HK -f ISO-8859-1 en_HK +localedef -i en_PH -f ISO-8859-1 en_PH +localedef -i en_US -f ISO-8859-1 en_US +localedef -i en_US -f UTF-8 en_US.UTF-8 +localedef -i es_ES -f ISO-8859-15 es_ES@euro +localedef -i es_MX -f ISO-8859-1 es_MX +localedef -i fa_IR -f UTF-8 fa_IR +localedef -i fr_FR -f ISO-8859-1 fr_FR +localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro +localedef -i fr_FR -f UTF-8 fr_FR.UTF-8 +localedef -i is_IS -f ISO-8859-1 is_IS +localedef -i is_IS -f UTF-8 is_IS.UTF-8 +localedef -i it_IT -f ISO-8859-1 it_IT +localedef -i it_IT -f ISO-8859-15 it_IT@euro +localedef -i it_IT -f UTF-8 it_IT.UTF-8 +localedef -i ja_JP -f EUC-JP ja_JP +localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true +localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 +localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro +localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R +localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 +localedef -i se_NO -f UTF-8 se_NO.UTF-8 +localedef -i ta_IN -f UTF-8 ta_IN.UTF-8 +localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 +localedef -i zh_CN -f GB18030 zh_CN.GB18030 +localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS +localedef -i zh_TW -f UTF-8 zh_TW.UTF-8</kbd></pre> + <p> + Кроме того, установите локаль для вашей страны, языка и набора + символов. + </p> + <p> + В качестве альтернативы, установите сразу все локали перечисленные + в файле <code class= + "filename">glibc-2.40/localedata/SUPPORTED</code> (он включает все + локали из списка выше и многие другие), выполнив команду: + </p> + <pre class="userinput"><kbd class= + "command">make localedata/install-locales</kbd></pre> + <p> + Затем используйте команду <span class= + "command"><strong>localedef</strong></span> для создания и + установки локалей, не перечисленных в файле <code class= + "filename">glibc-2.40/localedata/SUPPORTED</code>, когда они вам + понадобятся. Например, для некоторых тестов в этой главе + потребуются следующие две локали: + </p> + <pre class="userinput"><kbd class= + "command">localedef -i C -f UTF-8 C.UTF-8 +localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true</kbd></pre> + <div class="admon note"> + <img alt="[Примечание]" src="../images/note.png" /> + <h3> + Примечание + </h3> + <p> + Glibc теперь использует libidn2 для разрешения + интернационализированных доменных имен. Если такая функция + необходима, то инструкцию по установке libidn2 можно найти на + странице <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.2/general/libidn2.html"> + BLFS libidn2</a>. + </p> + </div> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + <a id="conf-glibc" name="conf-glibc"></a>8.5.2. Настройка Glibc + </h2> + <div class="sect3"> + <h3 class="sect3"> + 8.5.2.1. Добавление nsswitch.conf + </h3> + <p> + Необходимо создать файл <code class= + "filename">/etc/nsswitch.conf</code>, потому что настроенный по + умолчанию Glibc плохо работает в сетевой среде. + </p> + <p> + Создайте новый фай <code class= + "filename">/etc/nsswitch.conf</code>, выполнив следующие + действия: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/nsswitch.conf << "EOF" +<code class="literal"># Begin /etc/nsswitch.conf + +passwd: files +group: files +shadow: files + +hosts: files dns +networks: files + +protocols: files +services: files +ethers: files +rpc: files + +# End /etc/nsswitch.conf</code> +EOF</kbd></pre> + </div> + <div class="sect3"> + <h3 class="sect3"> + 8.5.2.2. Добавление данных о часовом поясе + </h3> + <p> + Установите и настройте часовой пояс следующим образом: + </p> + <pre class="userinput"><kbd class= + "command">tar -xf ../../tzdata2024a.tar.gz + +ZONEINFO=/usr/share/zoneinfo +mkdir -pv $ZONEINFO/{posix,right} + +for tz in etcetera southamerica northamerica europe africa antarctica \ + asia australasia backward; do + zic -L /dev/null -d $ZONEINFO ${tz} + zic -L /dev/null -d $ZONEINFO/posix ${tz} + zic -L leapseconds -d $ZONEINFO/right ${tz} +done + +cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO +zic -d $ZONEINFO -p America/New_York +unset ZONEINFO</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение команд zic:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>zic -L + /dev/null ...</code></em></span> + </dt> + <dd> + <p> + Создаёт часовые пояса posix без секунд координации. Обычно + их помещают как в <code class="filename">zoneinfo</code> + так и в <code class="filename">zoneinfo/posix</code>. + Часовые пояса POSIX должны быть прописаны в <code class= + "filename">zoneinfo</code>, иначе различные тесты будут + сообщать об ошибках. На встраиваемых системах с небольшим + диском, где часовые пояса никогда не будут обновляться, + можно сэкономить примерно 1.9 MB не используя каталог + <code class="filename">posix</code>, однако некоторые + приложения или наборы тестов могут вызывать сбои. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>zic -L + leapseconds ...</code></em></span> + </dt> + <dd> + <p> + Создаёт правильные часовые пояса с секундами координации. + На встраиваемых системах с небольшим диском, где часовые + пояса никогда не будут обновляться, а правильность времени + неважна, можно выиграть примерно 1.9 MB, исключив каталог + <code class="filename">right</code>. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>zic ... -p + ...</code></em></span> + </dt> + <dd> + <p> + Создаёт файл <code class="filename">posixrules</code>. + Используется New York, потому что POSIX требует, чтобы + правила перехода на летнее время соответствовали правилам + США. + </p> + </dd> + </dl> + </div> + <p> + Один из способов определить местный часовой пояс — запустить + следующий скрипт: + </p> + <pre class="userinput"><kbd class="command">tzselect</kbd></pre> + <p> + После нескольких вопросов о местоположении скрипт выдаст + наименование часового пояса (например <span class= + "emphasis"><em>America/Edmonton</em></span>). В файле + <code class="filename">/usr/share/zoneinfo</code> перечислены и + другие возможные часовые пояса, такие как <span class= + "emphasis"><em>Canada/Eastern</em></span> или <span class= + "emphasis"><em>EST5EDT</em></span>, которые не распознаются + скриптом, но могут быть использованы. + </p> + <p> + Создайте файл <code class="filename">/etc/localtime</code> + выполнив: + </p> + <pre class="userinput"><kbd class= + "command">ln -sfv /usr/share/zoneinfo/<em class= + "replaceable"><code><xxx></code></em> /etc/localtime</kbd></pre> + <p> + Замените <em class="replaceable"><code><xxx></code></em> на + имя выбранного часового пояса (например, Europe/Moscow). + </p> + </div> + <div class="sect3"> + <h3 class="sect3"> + <a id="conf-ld" name="conf-ld"></a>8.5.2.3. Настройка + динамического загрузчика + </h3> + <p> + По умолчанию, динамический загрузчик (<code class= + "filename">/lib/ld-linux.so.2</code>) ищет в каталоге + <code class="filename">/usr/lib</code>, нужные для работы + программ библиотеки. Однако, если библиотеки находятся в другом + каталоге, то его необходимо указать в файле <code class= + "filename">/etc/ld.so.conf</code>, чтобы динамический загрузчик + мог их найти. Два каталога - <code class= + "filename">/usr/local/lib</code> и <code class= + "filename">/opt/lib</code> часто используются для дополнительных + библиотек, поэтому добавьте их в пути поиска для динамического + загрузчика. + </p> + <p> + Создайте новый файл <code class="filename">/etc/ld.so.conf</code> + выполнив: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/ld.so.conf << "EOF" +<code class="literal"># Begin /etc/ld.so.conf +/usr/local/lib +/opt/lib +</code> +EOF</kbd></pre> + <p> + Динамический загрузчик может выполнить поиск в каталоге и + включить содержимое найденных там файлов. Обычно такие файлы + состоят из одной строки и содержат путь к библиотеке. Чтобы + добавить эту возможность, выполните следующие команды: + </p> + <pre class="userinput"><kbd class= + "command">cat >> /etc/ld.so.conf << "EOF" +<code class="literal"># Add an include directory +include /etc/ld.so.conf.d/*.conf +</code> +EOF +mkdir -pv /etc/ld.so.conf.d</kbd></pre> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + <a id="contents-glibc" name="contents-glibc"></a>8.5.3. Содержимое + пакета Glibc + </h2> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные программы:</strong> + <span class="segbody">gencat, getconf, getent, iconv, + iconvconfig, ldconfig, ldd, lddlibc4, ld.so (symlink to + ld-linux-x86-64.so.2 or ld-linux.so.2), locale, localedef, + makedb, mtrace, pcprofiledump, pldd, sln, sotruss, sprof, + tzselect, xtrace, zdump и zic</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные библиотеки:</strong> + <span class="segbody">ld-linux-x86-64.so.2, ld-linux.so.2, + libBrokenLocale.{a,so}, libanl.{a,so}, libc.{a,so}, + libc_nonshared.a, libc_malloc_debug.so, libdl.{a,so.2}, libg.a, + libm.{a,so}, libmcheck.a, libmemusage.so, libmvec.{a,so}, + libnsl.so.1, libnss_compat.so, libnss_dns.so, libnss_files.so, + libnss_hesiod.so, libpcprofile.so, libpthread.{a,so.0}, + libresolv.{a,so}, librt.{a,so.1}, libthread_db.so и + libutil.{a,so.1}</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/arpa, /usr/include/bits, + /usr/include/gnu, /usr/include/net, /usr/include/netash, + /usr/include/netatalk, /usr/include/netax25, + /usr/include/neteconet, /usr/include/netinet, + /usr/include/netipx, /usr/include/netiucv, + /usr/include/netpacket, /usr/include/netrom, + /usr/include/netrose, /usr/include/nfs, /usr/include/protocols, + /usr/include/rpc, /usr/include/sys, /usr/lib/audit, + /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, + /usr/share/i18n, /usr/share/zoneinfo и /var/lib/nss_db</span> + </div> + </div> + </div> + <div class="variablelist"> + <h3> + Краткое описание + </h3> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="gencat" name="gencat"></a><span class= + "term"><span class= + "command"><strong>gencat</strong></span></span> + </p> + </td> + <td> + <p> + Создает каталоги сообщений + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getconf" name="getconf"></a><span class= + "term"><span class= + "command"><strong>getconf</strong></span></span> + </p> + </td> + <td> + <p> + Отображает настройки системы для специфичных переменных + файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getent" name="getent"></a><span class= + "term"><span class= + "command"><strong>getent</strong></span></span> + </p> + </td> + <td> + <p> + Получает записи из административной базы данных + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="iconv" name="iconv"></a><span class= + "term"><span class= + "command"><strong>iconv</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет преобразование набора символов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="iconvconfig" name="iconvconfig"></a><span class= + "term"><span class= + "command"><strong>iconvconfig</strong></span></span> + </p> + </td> + <td> + <p> + Создает быстрозагружаемые файлы настроек модуля + <span class="command"><strong>iconv</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ldconfig" name="ldconfig"></a><span class= + "term"><span class= + "command"><strong>ldconfig</strong></span></span> + </p> + </td> + <td> + <p> + Создаёт необходимые привязки и кэш динамических + библиотек, который используется компоновщиком для + связывания во время выполнения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ldd" name="ldd"></a><span class= + "term"><span class="command"><strong>ldd</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает, какие общие библиотеки требуются каждой + программе или общей библиотеке + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lddlibc4" name="lddlibc4"></a><span class= + "term"><span class= + "command"><strong>lddlibc4</strong></span></span> + </p> + </td> + <td> + <p> + Помогает <span class= + "command"><strong>ldd</strong></span> работать с + объектными файлами. Он не существует на более новых + архитектурах, таких как x86_64 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="locale" name="locale"></a><span class= + "term"><span class= + "command"><strong>locale</strong></span></span> + </p> + </td> + <td> + <p> + Выводит различную информацию о текущей локали + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="localedef" name="localedef"></a><span class= + "term"><span class= + "command"><strong>localedef</strong></span></span> + </p> + </td> + <td> + <p> + Компилирует спецификации локали + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="makedb" name="makedb"></a><span class= + "term"><span class= + "command"><strong>makedb</strong></span></span> + </p> + </td> + <td> + <p> + Создает простую базу данных на основе текстового ввода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mtrace" name="mtrace"></a><span class= + "term"><span class= + "command"><strong>mtrace</strong></span></span> + </p> + </td> + <td> + <p> + Читает и интерпретирует файл трассировки памяти; + отображает сводку в удобочитаемом формате + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pcprofiledump" name= + "pcprofiledump"></a><span class="term"><span class= + "command"><strong>pcprofiledump</strong></span></span> + </p> + </td> + <td> + <p> + Создает дамп информации, генерируемой при профилировании + ПК + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pldd" name="pldd"></a><span class= + "term"><span class= + "command"><strong>pldd</strong></span></span> + </p> + </td> + <td> + <p> + Перечисляет динамические общие объекты, используемые + запущенными процессами. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sln" name="sln"></a><span class= + "term"><span class="command"><strong>sln</strong></span></span> + </p> + </td> + <td> + <p> + Статически скомпонованная программа <span class= + "command"><strong>ln</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sotruss" name="sotruss"></a><span class= + "term"><span class= + "command"><strong>sotruss</strong></span></span> + </p> + </td> + <td> + <p> + Отслеживает вызовы процедур общей библиотеки указанной + команды + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sprof" name="sprof"></a><span class= + "term"><span class= + "command"><strong>sprof</strong></span></span> + </p> + </td> + <td> + <p> + Читает и отображает данные профилирования общих объектов. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tzselect" name="tzselect"></a><span class= + "term"><span class= + "command"><strong>tzselect</strong></span></span> + </p> + </td> + <td> + <p> + Запрашивает у пользователя информацию о текущем + местоположении системы и выводит описание + соответствующего часового пояса. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xtrace" name="xtrace"></a><span class= + "term"><span class= + "command"><strong>xtrace</strong></span></span> + </p> + </td> + <td> + <p> + Отслеживает выполнение программы, отображая выполняемую в + данный момент функцию + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zdump" name="zdump"></a><span class= + "term"><span class= + "command"><strong>zdump</strong></span></span> + </p> + </td> + <td> + <p> + Выдает дамп часового пояса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zic" name="zic"></a><span class= + "term"><span class="command"><strong>zic</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор часовых поясов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ld.so" name="ld.so"></a><span class= + "term"><code class="filename">ld-*.so</code></span> + </p> + </td> + <td> + <p> + Вспомогательная программа для исполняемых файлов общей + библиотеки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libBrokenLocale" name= + "libBrokenLocale"></a><span class="term"><code class= + "filename">libBrokenLocale</code></span> + </p> + </td> + <td> + <p> + Используется внутри Glibc как грубый хак для запуска + сломанных программ (например, некоторые приложения + Motif). Прочитайте комментарии в <code class= + "filename">glibc-2.40/locale/broken_cur_max.c</code> для + получения дополнительной информации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libanl" name="libanl"></a><span class= + "term"><code class="filename">libanl</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее это + была библиотека асинхронного поиска имен, функции которой + теперь находятся в <code class="filename">libc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libc" name="libc"></a><span class= + "term"><code class="filename">libc</code></span> + </p> + </td> + <td> + <p> + Основная библиотека C + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libc_malloc_debug" name= + "libc_malloc_debug"></a><span class="term"><code class= + "filename">libc_malloc_debug</code></span> + </p> + </td> + <td> + <p> + Включает проверку выделения памяти при предварительной + загрузке + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libdl" name="libdl"></a><span class= + "term"><code class="filename">libdl</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее была + библиотекой интерфейса динамической компоновки, функции + которой теперь находятся в <code class= + "filename">libc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libg" name="libg"></a><span class= + "term"><code class="filename">libg</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка без функций. Раньше была библиотекой + среды выполнения для <span class= + "command"><strong>g++</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libm" name="libm"></a><span class= + "term"><code class="filename">libm</code></span> + </p> + </td> + <td> + <p> + Математическая библиотека + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmvec" name="libmvec"></a><span class= + "term"><code class="filename">libmvec</code></span> + </p> + </td> + <td> + <p> + Библиотека векторных математических вычислений, + подключаемая по мере необходимости при использовании + <code class="filename">libm</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmcheck" name="libmcheck"></a><span class= + "term"><code class="filename">libmcheck</code></span> + </p> + </td> + <td> + <p> + Включает проверку выделения памяти при подключении к + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmemusage" name="libmemusage"></a><span class= + "term"><code class="filename">libmemusage</code></span> + </p> + </td> + <td> + <p> + Используется <span class= + "command"><strong>memusage</strong></span> для сбора + информации об использовании памяти программой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libnsl" name="libnsl"></a><span class= + "term"><code class="filename">libnsl</code></span> + </p> + </td> + <td> + <p> + Библиотека сетевых служб, которая в настоящее время + устарела + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libnss" name="libnss"></a><span class= + "term"><code class="filename">libnss_*</code></span> + </p> + </td> + <td> + <p> + Модули Name Service Switch, содержащие функции для + разрешения имен хостов, имен пользователей, имен групп, + псевдонимов, служб, протоколов и т. д. Загружаются + <code class="filename">libc</code> в соответствии с + конфигурацией в <code class= + "filename">/etc/nsswitch.conf</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpcprofile" name="libpcprofile"></a><span class= + "term"><code class="filename">libpcprofile</code></span> + </p> + </td> + <td> + <p> + Содержит функции профилирования, используемые для + отслеживания времени, потраченного процессором в + конкретных строках исходного кода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpthread" name="libpthread"></a><span class= + "term"><code class="filename">libpthread</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее + содержала функции, обеспечивающие большинство + интерфейсов, заданных POSIX.1c Threads Extensions + (расширения реализации потоков) и интерфейсы семафоров, + указанных в POSIX.1b Real-time Extension (расширения + реального времени), теперь эти функции находятся в + <code class="filename">libc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libresolv" name="libresolv"></a><span class= + "term"><code class="filename">libresolv</code></span> + </p> + </td> + <td> + <p> + Содержит функции создания, пересылки и интерпретации + пакетов, используемых на серверах доменных имен в сети + интернет + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="librt" name="librt"></a><span class= + "term"><code class="filename">librt</code></span> + </p> + </td> + <td> + <p> + Содержит функции, реализующие большую часть интерфейсов, + определяемых в POSIX.1b Real-time Extension (расширения + реального времени) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libthread_db" name="libthread_db"></a><span class= + "term"><code class="filename">libthread_db</code></span> + </p> + </td> + <td> + <p> + Содержит функции, полезные для сборки отладчиков для + многопоточных программ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libutil" name="libutil"></a><span class= + "term"><code class="filename">libutil</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее + содержал код для <span class="quote">«<span class= + "quote">стандартных</span>»</span> функций, используемых + во многих утилитах Unix. Эти функции теперь находятся в + <code class="filename">libc</code> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="navfooter"> + <ul> + <li class="prev"> + <a accesskey="p" href="iana-etc.html" title= + "Iana-Etc-20240806">Пред.</a> + <p> + Iana-Etc-20240806 + </p> + </li> + <li class="next"> + <a accesskey="n" href="zlib.html" title="Zlib-1.3.1">След.</a> + <p> + Zlib-1.3.1 + </p> + </li> + <li class="up"> + <a accesskey="u" href="chapter08.html" title= + "Глава 8. Установка базового системного программного обеспечения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> |