Translated chapter 8 (from gettext until shadow)

This commit is contained in:
Poltern 2023-09-01 23:38:19 +05:00
parent 99632982c0
commit 0198ef0dbc
20 changed files with 120 additions and 110 deletions

View File

@ -95,7 +95,7 @@ chmod -v 0755 /usr/lib/preloadable_libintl.so</userinput></screen>
<seg>libasprintf.so, libgettextlib.so, libgettextpo.so,
libgettextsrc.so, libtextstyle.so и preloadable_libintl.so</seg>
<seg>/usr/lib/gettext, /usr/share/doc/gettext-&gettext-version;,
/usr/share/gettext и /usr/share/gettext-0.19.8</seg>
/usr/share/gettext и /usr/share/gettext-&gettext-version;</seg>
</seglistitem>
</segmentedlist>

View File

@ -50,15 +50,10 @@
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
<!-- https://sourceware.org/bugzilla/show_bug.cgi?id=30068
Upstream fix also added a test case and renamed "prec" to
"prec_inc". We'll test this with MPFR test suite so we don't
need the test here, and the renaming does not affect program
behavior. -->
<para>Исправьте проблему безопасности, обнаруженную разработчиками:</para>
<para>Теперь исправьте регрессию, из-за которой функция posix_memalign() в некоторых
условиях работала очень медленно:</para>
<screen><userinput remap="pre">sed '/width -=/s/workend - string/number_length/' \
-i stdio-common/vfprintf-process-arg.c</userinput></screen>
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-memalign-patch;</userinput></screen>
<para>Документация Glibc рекомендует выполнять компиляцию в отдельном каталоге:</para>
@ -159,10 +154,13 @@ esac</userinput></screen>
<para>Известно, что <emphasis>io/tst-lchmod</emphasis> не работает в среде chroot LFS.</para>
</listitem>
<!-- Did not fail with glibc-2.38
<listitem>
<para>Известно, что <emphasis>misc/tst-ttyname</emphasis> не работает в среде chroot LFS.</para>
</listitem>
-->
<!-- https://sourceware.org/pipermail/libc-alpha/2022-August/141567.html -->
<listitem>
@ -171,24 +169,14 @@ esac</userinput></screen>
</listitem>
<listitem>
<para>Некоторые тесты, например, <emphasis>nss/tst-nss-files-hosts-multi</emphasis> не
работают на относительно медленных системах из-за внутреннего тайм-аута.</para>
</listitem>
<!--
<listitem>
<para>The <emphasis>rt/tst-cputimer{1,2,3}</emphasis> tests depend on
the host system kernel. Kernels 4.14.91&ndash;4.14.96,
4.19.13&ndash;4.19.18, and 4.20.0&ndash;4.20.5 are known to
cause these tests to fail.
</para>
<para>Некоторые тесты, например, <emphasis>nss/tst-nss-files-hosts-multi</emphasis>
не работают на относительно медленных системах из-за внутреннего тайм-аута.</para>
</listitem>
<listitem>
<para>The math tests sometimes fail when running on
systems where the CPU is not a relatively new Intel or
AMD processor.</para>
<para>Кроме того, некоторые тесты могут завершиться неудачно при использовании
относительно старой модели процессора или версии ядра хоста.</para>
</listitem>
-->
</itemizedlist>
<para>На этапе установки Glibc будет жаловаться на отсутствие файла
@ -197,9 +185,9 @@ esac</userinput></screen>
<screen><userinput remap="install">touch /etc/ld.so.conf</userinput></screen>
<para>Исправьте Makefile, чтобы пропустить ненужную проверку работоспособности,
которая завершается неудачей в неполной среде LFS:
</para>
<!-- https://sourceware.org/bugzilla/show_bug.cgi?id=21911 -->
<para>Исправьте Makefile, чтобы пропустить устаревшую проверку работоспособности,
которая завершается неудачей в современной конфигурации Glibc:</para>
<screen><userinput remap="install">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</userinput></screen>
@ -479,7 +467,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
<seg>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,
libcrypt.{a,so}, libdl.{a,so.2}, libg.a, libm.{a,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},
@ -755,7 +743,9 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
<varlistentry id="libanl">
<term><filename class="libraryfile">libanl</filename></term>
<listitem>
<para>Библиотека асинхронного поиска имен</para>
<para>Библиотека-заглушка, не содержащая функций. Ранее это была библиотека
асинхронного поиска имен, функции которой теперь находятся в
<filename class='libraryfile'>libc</filename></para>
<indexterm zone="ch-system-glibc libanl">
<primary sortas="c-libanl">libanl</primary>
</indexterm>
@ -782,16 +772,6 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
</listitem>
</varlistentry>
<varlistentry id="libcrypt">
<term><filename class="libraryfile">libcrypt</filename></term>
<listitem>
<para>Криптографическая библиотека</para>
<indexterm zone="ch-system-glibc libcrypt">
<primary sortas="c-libcrypt">libcrypt</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libdl">
<term><filename class="libraryfile">libdl</filename></term>
<listitem>
@ -894,10 +874,11 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
<varlistentry id="libpthread">
<term><filename class="libraryfile">libpthread</filename></term>
<listitem>
<para>Библиотека-заглушка, не содержащая функций. Ранее содержал функции,
обеспечивающие большинство интерфейсов, указанных в
POSIX.1b Realtime Extension, теперь эти функции находятся в
<filename class="libraryfile">libc</filename></para>
<para>Библиотека-заглушка, не содержащая функций. Ранее содержала функции,
обеспечивающие большинство интерфейсов, заданных POSIX.1c Threads Extensions
(расширения реализации потоков) и интерфейсы семафоров, указанных в POSIX.1b
Real-time Extension (расширения реального времени), теперь эти функции находятся
в <filename class="libraryfile">libc</filename></para>
<indexterm zone="ch-system-glibc libpthread">
<primary sortas="c-libpthread">libpthread</primary>
</indexterm>
@ -919,7 +900,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
<term><filename class="libraryfile">librt</filename></term>
<listitem>
<para>Содержит функции, реализующие большую часть интерфейсов,
определяемых в POSIX.1b Realtime Extension</para>
определяемых в POSIX.1b Real-time Extension (расширения реального времени)</para>
<indexterm zone="ch-system-glibc librt">
<primary sortas="c-librt">librt</primary>
</indexterm>

View File

@ -54,10 +54,12 @@
<para>Настройки GMP по умолчанию собирают библиотеки, оптимизированные для
процессора хоста. Если требуются библиотеки, подходящие для процессоров с
меньшей производительностью, чем у процессора хоста, можно собрать
общие библиотеки, выполнив следующие команды:
общие библиотеки, добавив параметр <option>--host=none-linux-gnu</option> в
команде <command>configure</command>.</para>
<screen role="nodump"><userinput>cp -v configfsf.guess config.guess
cp -v configfsf.sub config.sub</userinput></screen></para>
<!-- To editors: the configure script says "the none host is obsolete,
use - -disable-assembly", but don't believe it: with the latter
CFLAGS is still automatically set to -march=something. -->
</note>
<para>Подготовьте GMP к компиляции:</para>
@ -104,9 +106,11 @@ make html</userinput></screen>
собран. Иногда код, определяющий процессор, неверно определяет возможности
системы, и в тестах или других приложениях, использующих библиотеки gmp, возникают
ошибки с сообщением "Illegal instruction". В этом случае gmp следует переконфигурировать
с параметром --build=x86_64-pc-linux-gnu и пересобрать.</para></caution>
с параметром <option>--host=none-linux-gnu</option> и пересобрать.</para></caution>
<para>Убедитесь, что все 197 тестов в наборе тестов пройдены. Проверьте
<!-- Some tests PASS on a specific uarch but SKIP on other CPUs.
For example on K8 the following command outputs 200. -->
<para>Убедитесь, что все 199 тестов в наборе тестов пройдены. Проверьте
результат, выполнив следующую команду:</para>
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>

View File

@ -55,7 +55,9 @@
<screen><userinput remap="make">make</userinput></screen>
<para>С этим пакетом не поставляется набор тестов.</para>
<para>Чтобы протестировать пакет, выполните:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Установите пакет:</para>

View File

@ -5,7 +5,7 @@
%general-entities;
]>
<sect1 id="ch-system-jinja2" role="wrap" revision="systemd">
<sect1 id="ch-system-jinja2" role="wrap">
<?dbhtml filename="jinja2.html"?>
<sect1info condition="script">

View File

@ -94,8 +94,7 @@ sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in</userinput></screen>
<para>По желанию, установите документацию::</para>
<screen><userinput remap="install">mkdir -pv /usr/share/doc/kbd-&kbd-version;
cp -R -v docs/doc/* /usr/share/doc/kbd-&kbd-version;</userinput></screen>
<screen><userinput remap="install">cp -R -v docs/doc -T /usr/share/doc/kbd-&kbd-version;</userinput></screen>
</sect2>

View File

@ -61,7 +61,9 @@
<screen><userinput remap="make">make</userinput></screen>
<para>С этим пакетом не поставляются наборы тестов.</para>
<para>Чтобы протестировать пакет, выполните:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Установите пакет:</para>

View File

@ -58,10 +58,6 @@
<screen><userinput remap="test">make check</userinput></screen>
<!-- https://sourceware.org/bugzilla/show_bug.cgi?id=30047 -->
<para>Известно, что тест с именем <filename>run-native-test.sh</filename> завершается
ошибкой.</para>
<para>Установите только Libelf:</para>
<screen><userinput remap="install">make -C libelf install
@ -79,7 +75,7 @@ rm /usr/lib/libelf.a</userinput></screen>
<seglistitem>
<seg>
libelf.so (символическая ссылка) и libelf-&elfutils-version;.so
libelf.so
</seg>
<seg>
/usr/include/elfutils
@ -94,7 +90,7 @@ rm /usr/lib/libelf.a</userinput></screen>
<?dbhtml list-presentation="table"?>
<varlistentry id="libelf">
<term><filename class="libraryfile">libelf</filename></term>
<term><filename class="libraryfile">libelf.so</filename></term>
<listitem>
<para>Содержит функции API для обработки объектных файлов ELF</para>
<indexterm zone="ch-system-libelf libelf">

View File

@ -41,12 +41,6 @@
<sect2 role="installation">
<title>Установка пакета Make</title>
<para>Во-первых, исправьте некоторые проблемы, выявленные разработчиками:</para>
<screen><userinput remap="pre">sed -e '/ifdef SIGPIPE/,+2 d' \
-e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \
-i src/main.c</userinput></screen>
<para>Подготовьте Make к компиляции:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
@ -55,9 +49,12 @@
<screen><userinput remap="make">make</userinput></screen>
<!-- Running tests as root causes failures:
https://savannah.gnu.org/bugs/?63852 -->
<para>Чтобы протестировать пакет, выполните:</para>
<screen><userinput remap="test">make check</userinput></screen>
<screen><userinput remap="test">chown -Rv tester .
su tester -c "PATH=$PATH make check"</userinput></screen>
<para>Установите пакет:</para>

View File

@ -114,6 +114,10 @@
<screen><userinput remap="test">make check</userinput></screen>
<!-- https://gitlab.com/man-db/man-db/-/issues/25 -->
<para>Известно, что один тест с именем <filename>man1/lexgrog.1</filename> завершился
неудачно.</para>
<para>Установите пакет:</para>
<screen><userinput remap="install">make install</userinput></screen>

View File

@ -40,6 +40,12 @@
<sect2 role="installation">
<title>Установка пакета Man-pages</title>
<para>Удалите две справочные страницы для функций хэширования паролей.
<application>Libxcrypt</application> предоставит улучшенную версию этих справочных
страниц:</para>
<screen><userinput remap="pre">rm -v man3/crypt*</userinput></screen>
<para>Установите пакет Man-pages выполнив команду:</para>
<screen><userinput remap="install">make prefix=/usr install</userinput></screen>

View File

@ -5,7 +5,7 @@
%general-entities;
]>
<sect1 id="ch-system-markupsafe" role="wrap" revision="systemd">
<sect1 id="ch-system-markupsafe" role="wrap">
<?dbhtml filename="markupsafe.html"?>
<sect1info condition="script">

View File

@ -35,13 +35,6 @@
</seglistitem>
</segmentedlist>
<tip revision="sysv">
<para>Этот раздел не обязателен, если LFS не использует systemd. С другой стороны,
Meson вместе с Ninja составляет мощную комбинацию систем сборки, которая, вероятно,
будет использоваться все чаще и чаще. Meson необходим для нескольких пакетов
в <ulink url="&blfs-book;">книге BLFS</ulink>.</para>
</tip>
</sect2>
<sect2 role="installation">

View File

@ -155,8 +155,7 @@ ln -sfv libncurses.so /usr/lib/libcurses.so</userinput></screen>
<para>По желанию установите документацию Ncurses:</para>
<screen><userinput remap="install">mkdir -pv /usr/share/doc/ncurses-&ncurses-version;
cp -v -R doc/* /usr/share/doc/ncurses-&ncurses-version;</userinput></screen>
<screen><userinput remap="install">cp -v -R doc -T /usr/share/doc/ncurses-&ncurses-version;</userinput></screen>
<note>

View File

@ -35,13 +35,6 @@
</seglistitem>
</segmentedlist>
<tip revision="sysv">
<para>Этот раздел не обязателен, если LFS не использует systemd. С другой стороны,
Ninja вместе с Meson составляет мощную комбинацию систем сборки, которая, вероятно,
будет использоваться все чаще и чаще. Ninja требуется для нескольких пакетов
в <ulink url="&blfs-book;">книге BLFS</ulink>.</para>
</tip>
</sect2>
<sect2 role="installation">

View File

@ -64,9 +64,12 @@
<screen><userinput remap="test">make test</userinput></screen>
<para>Известно, что один тест (30-test_afalg.t) завершается ошибкой при некоторых
конфигурациях ядра (в зависимости от несовместимых параметров CONFIG_CRYPTO_USER_API*).
Если этот тест не пройден, его можно смело игнорировать.</para>
<para>Известно, что один тест, 30-test_afalg.t, завершится ошибкой, если в ядре
хоста не включен параметр <option>CONFIG_CRYPTO_USER_API_SKCIPHER</option> или
отсутствуют какие-либо опции, обеспечивающих реализацию AES с CBC (например, комбинация
<option>CONFIG_CRYPTO_AES</option> и <option>CONFIG_CRYPTO_CBC</option> или
<option>CONFIG_CRYPTO_AES_NI_INTEL</option>, если процессор поддерживает AES-NI).
В случае неудачи его можно смело игнорировать.</para>
<para>Установите пакет:</para>
@ -77,7 +80,7 @@ make MANSUFFIX=ssl install</userinput></screen>
<screen><userinput remap="install">mv -v /usr/share/doc/openssl /usr/share/doc/openssl-&openssl-version;</userinput></screen>
<para>По желанию установите дополнительную документацию:</para>
<para>По желанию, установите дополнительную документацию:</para>
<screen><userinput remap="install">cp -vfr doc/* /usr/share/doc/openssl-&openssl-version;</userinput></screen>
@ -93,9 +96,23 @@ make MANSUFFIX=ssl install</userinput></screen>
до версии с тем же ОСНОВНЫМ номером версии</emphasis>.
</para>
<!-- https://bugzilla.mindrot.org/show_bug.cgi?id=3548 -->
<para>
Однако все запущенные программы, связанные с этими библиотеками, необходимо
остановить и перезапустить. Для получения более подробной информации
Если установлен <application>OpenSSH</application>, это будет исключением из
общего правила, указанного выше. Он содержит чрезмерно ограничительную проверку
версии OpenSSL, поэтому и SSH-клиент, и SSH-сервер откажутся запускаться, если
OpenSSL обновлен с прежним номером MAJOR версии, но с другим номером MINOR
версии. После такого обновления вам необходимо пересобрать <application>OpenSSH</application>.
<emphasis role='bold'>Если <application>OpenSSH</application> используется для
доступа к системе, вам необходимо пересобрать и переустановить его после обновления
OpenSSL до новой MINOR версии перед выходом из системы, иначе вы не сможете больше
войти в систему через SSH.</emphasis>
</para>
<para>
Все запущенные программы, связанные с этими библиотеками, после обновления
необходимо остановить и перезапустить. Для получения более подробной информации
ознакомьтесь с соответствующей записью в
<xref linkend='pkgmgmt-upgrade-issues'/>.
</para>

View File

@ -80,6 +80,19 @@
библиотеки, пока все зависимые пакеты не будут перекомпилированы.</para>
</listitem>
<listitem><para>Если пакет (прямо или косвенно) связан как со старым, так и
с новым именем общей библиотеки (например, пакет ссылается как на
<filename class='libraryfile'>libfoo.so.2</filename>, так и на
<filename). class='libraryfile'>libbar.so.1</filename>, в то время как последний
ссылается на <filename class='libraryfile'>libfoo.so.3</filename>), пакет может
работать неправильно, поскольку разные версии общей библиотеки содержат несовместимые
определения для некоторых имен символов. Это может быть вызвано перекомпиляцией
некоторых, но не всех, пакетов, связанных со старой общей библиотекой, после
обновления пакета, предоставляющего общую библиотеку. Чтобы избежать этой проблемы,
пользователям необходимо как можно скорее пересобрать каждый пакет, связанный с
общей библиотекой, с обновленной версией (например, с libfoo.so.2 на libfoo.so.3).
</para></listitem>
<listitem> <para>Если пакет, содержащий общую библиотеку, обновляется, а имя
библиотеки не меняется, но уменьшается номер версии <emphasis role="bold">файла</emphasis>
библиотеки (например, библиотека по-прежнему называется
@ -103,14 +116,13 @@
завершения обновления, выведет список программ, которые использует старые версии этих библиотек
(замените <replaceable>libfoo</replaceable> именем библиотеки):</para>
<screen role="nodump"><userinput>grep -l -e '<replaceable>libfoo</replaceable>.*deleted' /proc/*/maps |
tr -cd 0-9\\n | xargs -r ps u</userinput></screen>
<screen role="nodump"><userinput>grep -l '<replaceable>libfoo</replaceable>.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u</userinput></screen>
<para>
Если для доступа к системе используется <application>OpenSSH</application> и он
связан с обновленной библиотекой, вам необходимо перезапустить службу
<command>sshd</command>, затем выйти из системы, снова войти в систему и повторно
выполнить предыдущую команду ps, чтобы убедиться, что удаленные библиотеки более
выполнить предыдущую команду, чтобы убедиться, что удаленные библиотеки более
не используются.
</para>

View File

@ -83,16 +83,6 @@ make check</userinput></screen>
<screen><userinput remap="test">make check</userinput></screen>
<!-- It's because "free -v" shows "used" greater than "total", and
a negative "free" for "Comm" line. The "total" value is from
"CommitLimit" in /proc/meminfo, which is the limit for one process.
But the "used" value is from "Committed_AS" in the same file,
which is the total commited virtual memory space of all processes.
I'll make a report to upstream anyway. -->
<para>Один тест с именем <filename>free with commit</filename> может завершиться
неудачей, если в дистрибутиве хоста запущены некоторые приложения с настраиваемым
распределителем памяти (например, JVM и веб-браузеры).</para>
<para>Установите пакет:</para>
<screen><userinput remap="install">make install</userinput></screen>

View File

@ -49,7 +49,9 @@
<screen><userinput remap="make">make</userinput></screen>
<para>С этим пакетом не поставляется набор тестов.</para>
<para>Чтобы протестировать пакет, выполните:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Установите пакет:</para>

View File

@ -59,10 +59,8 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
<para id="shadow-login_defs">Вместо используемого по умолчанию метода
<emphasis>crypt</emphasis>, используйте более безопасный метод шифрования паролей
<emphasis>SHA-512</emphasis>, который также позволяет использовать пароли длиннее
8 символов. Кроме того, установите количество раундов на 500 000 вместо 5000 по
умолчанию, что слишком мало для предотвращения атак методом перебора пароля. Также
необходимо изменить устаревшее местоположение для почтовых ящиков
<emphasis>YESCRYPT</emphasis>, который также позволяет использовать пароли длиннее
8 символов. Также необходимо изменить устаревшее местоположение для почтовых ящиков
пользователей <filename class="directory">/var/spool/mail</filename>, которое
Shadow использует по умолчанию, на используемое в настоящее
время <filename class="directory">/var/mail</filename>. И удалите
@ -77,8 +75,8 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
<envar>PATH</envar> в файле <filename>.bashrc</filename> после сборки LFS.</para>
</note>
<screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \
-e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@' \
<screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
-e 's:/var/spool/mail:/var/mail:' \
-e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
-i etc/login.defs</userinput></screen>
@ -104,6 +102,7 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
<screen><userinput remap="configure">touch /usr/bin/passwd
./configure --sysconfdir=/etc \
--disable-static \
--with-{b,yes}crypt \
--with-group-name-max-length=32</userinput></screen>
<variablelist>
@ -117,6 +116,20 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
существует, скрипт установки создаст его не в том месте.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-{b,yes}crypt</parameter></term>
<listitem>
<para>Оболочка расширяет это значение до двух параметров:
<parameter>--with-bcrypt</parameter> и
<parameter>--with-yescrypt</parameter>. Они позволяют Shadow использовать
алгоритмы Bcrypt и Yescrypt, реализованные в <application>Libxcrypt</application>,
для хеширования паролей. Эти алгоритмы более безопасны (в частности, гораздо
более устойчивы к атакам с использованием графических процессоров), чем
традиционные алгоритмы SHA.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-group-name-max-length=32</parameter></term>
<listitem>