summaryrefslogtreecommitdiff
path: root/lfs-12.2-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.2-sysv/chapter08/glibc.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/chapter08/glibc.html')
-rw-r--r--lfs-12.2-sysv/chapter08/glibc.html1315
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" &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" $(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.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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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&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.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&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.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 &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.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>