mirror of
https://github.com/Poltern/lfs-ru.git
synced 2024-10-18 11:50:21 +03:00
Add info about how to upgrade Glibc on a running system
Let's change our policy to match other "rolling release" distros and ease the procedure to fix Glibc security vulnerabilities. Squashed the commits in xry111/update-glibc branch to keep the history clean.
This commit is contained in:
parent
e3dc880fe2
commit
1558778edf
@ -49,12 +49,12 @@
|
|||||||
данные в каталогах, совместимых с FHS:</para>
|
данные в каталогах, совместимых с FHS:</para>
|
||||||
|
|
||||||
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
|
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
|
||||||
|
<!--
|
||||||
<para>Теперь исправьте две уязвимости безопасности и регрессию, из-за которой функция
|
<para>Теперь исправьте две уязвимости безопасности и регрессию, из-за которой функция
|
||||||
posix_memalign() в некоторых условиях работает очень медленно:</para>
|
posix_memalign() в некоторых условиях работает очень медленно:</para>
|
||||||
|
|
||||||
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-upstream-fixes-patch;</userinput></screen>
|
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-upstream-fixes-patch;</userinput></screen>
|
||||||
|
-->
|
||||||
<para>Документация Glibc рекомендует выполнять компиляцию в отдельном каталоге:</para>
|
<para>Документация Glibc рекомендует выполнять компиляцию в отдельном каталоге:</para>
|
||||||
|
|
||||||
<screen><userinput remap="pre">mkdir -v build
|
<screen><userinput remap="pre">mkdir -v build
|
||||||
@ -196,6 +196,110 @@ esac</userinput></screen>
|
|||||||
|
|
||||||
<screen><userinput remap="install">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</userinput></screen>
|
<screen><userinput remap="install">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</userinput></screen>
|
||||||
|
|
||||||
|
<important>
|
||||||
|
<para>
|
||||||
|
При обновлении Glibc до новой минорной версии (например, с Glibc-2.36 до
|
||||||
|
Glibc-&glibc-version;) в работающей системе LFS вам необходимо принять некоторые
|
||||||
|
дополнительные меры предосторожности, чтобы избежать поломки системы:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<!-- There are two reasons we don't support this:
|
||||||
|
1. Upgrading on a system with separate /lib and /usr/lib is
|
||||||
|
tricky.
|
||||||
|
2. With Glibc prior to 2.34 libc.so.6 etc. are symlinks to
|
||||||
|
libc-2.33.so etc., again causing the upgradation tricky.
|
||||||
|
The Glibc NEWS file explicit states they no longer use
|
||||||
|
symlinks for the ABI names to avoid upgradation
|
||||||
|
issues. -->
|
||||||
|
<para>
|
||||||
|
Обновление Glibc в системе LFS до версии 11.0 не поддерживается. Пересоберите LFS,
|
||||||
|
если вы используете такую старую систему, но вам нужна более новая Glibc.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<!-- https://sourceware.org/pipermail/libc-alpha/2024-January/154095.html -->
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
При обновлении системы LFS до версии 12.0 установите
|
||||||
|
<application>Libxcrypt</application> следуя инструкции
|
||||||
|
<xref role='.' linkend='ch-system-libxcrypt'/>. В дополнение к обычной установке
|
||||||
|
<application>Libxcrypt</application>, <emphasis role='bold'>вы ДОЛЖНЫ следовать
|
||||||
|
примечанию со страницы Libxcrypt, чтобы установить
|
||||||
|
<filename class='libraryfile '>libcrypt.so.1*</filename> (перезаписав
|
||||||
|
<filename class='libraryfile'>libcrypt.so.1</filename> из предыдущей установки
|
||||||
|
Glibc)</emphasis>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<!-- Otherwise on lfs-systemd nscd will fail to start on boot,
|
||||||
|
and on both lfs-sysv and lfs-systemd useradd etc. will try
|
||||||
|
to start nscd, then nscd will fail to start as well and
|
||||||
|
produce some spurious error message. -->
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
При обновлении системы LFS до версии 12.1 удалите программу <command>nscd</command>:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<screen role='nodump'><userinput>rm -f /usr/sbin/nscd</userinput></screen>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Если система (до LFS 12.1) основана на Systemd, необходимо также отключить и
|
||||||
|
остановить службу <command>nscd</command> прямо сейчас:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<screen revision='systemd' role='nodump'><userinput>systemctl disable --now nscd</userinput></screen>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Обновите ядро и перезагрузитесь, если оно старше &min-kernel; (проверьте текущую
|
||||||
|
версию с помощью <command>uname -r</command>) или, если вы хотите обновить имеющееся
|
||||||
|
ядро, выполните действия из <xref linkend='ch-bootable-kernel' role='.'/>
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Обновите заголовочные файлы API ядра, если они старше &min-kernel; (проверьте
|
||||||
|
текущую версию с помощью <command>cat /usr/include/linux/version.h</command>)
|
||||||
|
или, если вы просто хотите обновить их, следуйте <xref linkend='ch-tools-linux-headers'/>
|
||||||
|
(но удалив <envar>$LFS</envar> из команды <command>cp</command>).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<!-- This is to ensure we don't start a process at the time point
|
||||||
|
where some Glibc shared libraries are updated but the others
|
||||||
|
are not. Such mismatches can cause programs crash on startup,
|
||||||
|
esp. a mismatch between ld-linux-x86-64.so.2 and
|
||||||
|
libc.so.6. Note that a crash in the installation process
|
||||||
|
will leave the system in a state with the mismatch forever,
|
||||||
|
unrecoverable without the help of another distro. -->
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Выполните установку <envar>DESTDIR</envar> и обновите общие библиотеки
|
||||||
|
Glibc в системе с помощью одной команды <command>install</command>:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<screen role='nodump'><userinput>make DESTDIR=$PWD/dest install
|
||||||
|
install -vm755 dest/usr/lib/*.so.* /usr/lib</userinput></screen>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Крайне важно строго следовать описанным выше шагам, если вы не совсем понимаете,
|
||||||
|
что делаете. <emphasis role='bold'>Любое неожиданное отклонение может сделать систему
|
||||||
|
полностью непригодной для использования. ВЫ ПРЕДУПРЕЖДЕНЫ.</emphasis>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Затем продолжайте выполнять команды <command>make install</command>, <command>sed</command>
|
||||||
|
для <filename>/usr/bin/ldd</filename> и команды для установки локалей. Как только
|
||||||
|
они будут выполнены, перезагрузите систему.
|
||||||
|
</para>
|
||||||
|
</important>
|
||||||
|
|
||||||
<para>Установите пакет:</para>
|
<para>Установите пакет:</para>
|
||||||
|
|
||||||
<screen><userinput remap="install">make install</userinput></screen>
|
<screen><userinput remap="install">make install</userinput></screen>
|
||||||
|
@ -60,19 +60,9 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Если необходимо обновить Glibc до более новой версии (например, с Glibc-2.31
|
<para>Если необходимо обновить Glibc до более новой версии (например, с Glibc-2.36
|
||||||
до Glibc-2.32), безопаснее заново собрать LFS. Хотя вы <emphasis>можете</emphasis>
|
до Glibc-&glibc-version;) необходимо выполнить некоторые дополнительные действия,
|
||||||
пересобрать все пакеты с их зависимостями, мы не рекомендуем этого делать.</para>
|
чтобы избежать поломки системы. Подробности читайте в <xref linkend='ch-system-glibc'/>.</para>
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Переустановка той же версии Glibc (&glibc-version; для этого выпуска LFS),
|
|
||||||
но с исправлениями, должна быть безопасной, если эти исправления не изменяют ABI
|
|
||||||
и API. Когда в Glibc обнаруживается уязвимость системы безопасности, нам часто
|
|
||||||
приходится применять такие патчи, чтобы устранить уязвимости и переустановить Glibc.
|
|
||||||
Обратитесь к <ulink url='&lfs-root;lfs/advisories/'>рекомендациям по безопасности
|
|
||||||
LFS</ulink>, если вы получили предупреждение об опубликованной уязвимости в
|
|
||||||
системе безопасности Glibc, но не уверены, какие действия следует предпринять.</para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem> <para>Если пакет, содержащий общую библиотеку, обновляется и имя
|
<listitem> <para>Если пакет, содержащий общую библиотеку, обновляется и имя
|
||||||
|
Loading…
Reference in New Issue
Block a user