summaryrefslogtreecommitdiff
path: root/lfs-12.1-sysv/chapter08/glibc.html
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
committerSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
commit2203e654b389586650d553251b04544a34f189bf (patch)
tree0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.1-sysv/chapter08/glibc.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.1-sysv/chapter08/glibc.html')
-rw-r--r--lfs-12.1-sysv/chapter08/glibc.html1314
1 files changed, 0 insertions, 1314 deletions
diff --git a/lfs-12.1-sysv/chapter08/glibc.html b/lfs-12.1-sysv/chapter08/glibc.html
deleted file mode 100644
index 277785f..0000000
--- a/lfs-12.1-sysv/chapter08/glibc.html
+++ /dev/null
@@ -1,1314 +0,0 @@
-<!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.39
- </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.1">
- <div class="navheader">
- <h4>
- Линукс с нуля - Версия 12.1
- </h4>
- <h3>
- Глава 8. Установка базового системного программного обеспечения
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="iana-etc.html" title=
- "Iana-Etc-20240125">Пред.</a>
- <p>
- Iana-Etc-20240125
- </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.1">Начало</a>
- </li>
- </ul>
- </div>
- <h1 class="sect1">
- <a id="ch-system-glibc" name="ch-system-glibc"></a>8.5. Glibc-2.39
- </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.39-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" &gt; 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" -l $(find -name \*.out)</kbd></pre>
- <p>
- Можно повторно запустить отдельный тест, увеличив таймаут с
- помощью команды <span class=
- "command"><strong>TIMEOUTFACTOR=<em class=
- "replaceable"><code>&lt;factor&gt;</code></em> make test
- t=<em class="replaceable"><code>&lt;test
- name&gt;</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.39) в работающей системе 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.26. Libxcrypt-4.4.36">Раздел&nbsp;8.26,
- «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.7.4">Раздел&nbsp;10.3, «Linux-6.7.4.»</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.7.4 API">Раздел&nbsp;5.4,
- «Заголовочные файлы Linux-6.7.4 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">mkdir -pv /usr/lib/locale
-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&gt; /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.39/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.39/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&gt; /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.1/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 &gt; /etc/nsswitch.conf &lt;&lt; "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>&lt;xxx&gt;</code></em> /etc/localtime</kbd></pre>
- <p>
- Замените <em class="replaceable"><code>&lt;xxx&gt;</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 &gt; /etc/ld.so.conf &lt;&lt; "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 &gt;&gt; /etc/ld.so.conf &lt;&lt; "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.39/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-20240125">Пред.</a>
- <p>
- Iana-Etc-20240125
- </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.1">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>