lfs-ru/chapter02/hostreqs.xml

261 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-hostreqs" xreflabel="Требования к хост-системе">
<?dbhtml filename="hostreqs.html"?>
<title>Требования к хост-системе</title>
<sect2>
<title>Аппаратное обеспечение</title>
<para>Редакторы LFS рекомендуют, чтобы процессор имел не менее четырех ядер и не
менее 8 ГБ памяти. Старые системы, не отвечающие этим требованиям, будут по-прежнему
работать, но время сборки пакетов будет значительно больше, чем указано в документации.</para>
</sect2>
<sect2>
<title>Программное обеспечение</title>
<para>Ваша хост-система должна иметь следующее программное обеспечение с
указанными минимальными версиями. Это не должно быть проблемой для
большинства современных дистрибутивов Linux. Также обратите внимание на то,
что многие дистрибутивы помещают заголовочные файлы в отдельные пакеты,
как правило в формате <quote>&lt;package-name&gt;-devel</quote> или
<quote>&lt;package-name&gt;-dev</quote>. Обязательно установите эти пакеты,
если ваш дистрибутив их предоставляет.</para>
<para>Более ранние версии перечисленных ниже пакетов могут работать, но
это не проверялось.</para>
<itemizedlist spacing="compact">
<listitem>
<para><emphasis role="strong">Bash-3.2</emphasis> (/bin/sh
должен быть символической или жесткой ссылкой на bash)</para>
</listitem>
<listitem>
<para><emphasis role="strong">Binutils-2.13.1</emphasis> (Версия выше
&binutils-version; не рекомендуется, так как она не тестировалась)</para>
</listitem>
<listitem>
<para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc
должен быть ссылкой на bison или небольшой скрипт, запускающий bison)</para>
</listitem>
<listitem>
<para><emphasis role="strong">Coreutils-7.0</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Diffutils-2.8.1</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Findutils-4.2.31</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Gawk-4.0.1</emphasis> (/usr/bin/awk
должен быть ссылкой на gawk)</para>
</listitem>
<listitem>
<para><emphasis role="strong">GCC-5.1</emphasis>, включая компилятор C++,
<command>g++</command> (версии выше 11.2.0 не рекомендуются, поскольку
они не тестировались). Также должны присутствовать стандартные библиотеки
C и C++ (с заголовочными файлами), чтобы компилятор C++ мог осуществлять
сборку программ.</para>
</listitem>
<listitem>
<para><emphasis role="strong">Grep-2.5.1a</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Gzip-1.3.12</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Linux Kernel-&min-kernel;</emphasis></para>
<para>Причиной, по которой указаны минимальные требования к версии ядра, является то, что
мы указываем эту версию при сборке <application>glibc</application> в
<xref linkend="chapter-cross-tools"/> и <xref linkend="chapter-building-system"/>. Так как
более старые ядра не поддерживаются, скомпилированный пакет <application>glibc</application>
немного меньше и быстрее. По состоянию на июнь 2023 г. &min-kernel; является самой старой
версией ядра, поддерживаемой разработчиками ядра.</para>
<para>Если версия ядра хоста более ранняя, чем &min-kernel;, вам необходимо обновить
ядро на более современную версию. Есть два способа сделать это. Во-первых,
посмотрите, предоставляет ли ваш дистрибутив Linux пакет ядра &min-kernel;
или более позднюю версию. Если это так, установите его. Если ваш дистрибутив
не предлагает приемлемый пакет ядра или вы предпочитаете не устанавливать
его, вы можете скомпилировать ядро самостоятельно. Инструкции по компиляции
ядра и настройке загрузчика (при условии, что хост использует GRUB)
находятся в <xref linkend="chapter-bootable"/>.</para>
<para>Для сборки LFS необходимо, чтобы ядро хоста поддерживало псевдотерминал
UNIX 98 (PTY). Обычно он включен на всех настольных или серверных дистрибутивах,
поставляющих Linux &min-kernel; или более новое ядро. Если вы собираете
собственное хоста, убедитесь, что для параметра <option>CONFIG_UNIX98_PTYS</option>
установлено значение <literal>y</literal> в конфигурационном файле ядра.</para>
</listitem>
<listitem>
<para><emphasis role="strong">M4-1.4.10</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Make-4.0</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Patch-2.5.4</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Perl-5.8.8</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Python-3.4</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Sed-4.1.5</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Tar-1.22</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Texinfo-5.0</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Xz-5.0.0</emphasis></para>
</listitem>
</itemizedlist>
<important>
<para>Обратите внимание, что упомянутые выше символические ссылки необходимы
для создания системы LFS с использованием инструкций, содержащихся в этой
книге. Симлинки, указывающие на другое программное обеспечение (например,
dash, mawk и т. д.), могут работать, но не тестируются и не поддерживаются
командой разработчиков LFS, и могут потребовать либо отклонения от
инструкций, либо дополнительных исправлений для некоторых пакетов.</para>
</important>
<!-- Use an empty sect2 element to prevent a pdf warning. -->
<bridgehead renderas="sect2"
id="version-check"
xreflabel="Системные требования к хостовой машине">
</bridgehead>
<!--<title> </title>-->
<para>Чтобы узнать, есть ли в вашей хост-системе все необходимые пакеты и
возможность компилировать программы, выполните следующий скрипт:</para>
<screen role="nodump"><userinput>cat &gt; version-check.sh &lt;&lt; "EOF"
<literal>#!/bin/bash
# A script to list version numbers of critical development tools
# If you have tools installed in other directories, adjust PATH here AND
# in ~lfs/.bashrc (section 4.4) as well.
LC_ALL=C
PATH=/usr/bin:/bin
bail() { echo "FATAL: $1"; exit 1; }
grep --version > /dev/null 2> /dev/null || bail "grep does not work"
sed '' /dev/null || bail "sed does not work"
sort /dev/null || bail "sort does not work"
ver_check()
{
if ! type -p $2 &amp;>/dev/null
then
echo "ERROR: Cannot find $2 ($1)"; return 1;
fi
v=$($2 --version 2>&amp;1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
if printf '%s\n' $3 $v | sort --version-sort --check &amp;>/dev/null
then
printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0;
else
printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1";
return 1;
fi
}
ver_kernel()
{
kver=$(uname -r | grep -E -o '^[0-9\.]+')
if printf '%s\n' $1 $kver | sort --version-sort --check &amp;>/dev/null
then
printf "OK: Linux Kernel $kver >= $1\n"; return 0;
else
printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver";
return 1;
fi
}
# Coreutils first because-sort needs Coreutils >= 7.0
ver_check Coreutils sort 7.0 || bail "--version-sort unsupported"
ver_check Bash bash 3.2
ver_check Binutils ld 2.13.1
ver_check Bison bison 2.7
ver_check Diffutils diff 2.8.1
ver_check Findutils find 4.2.31
ver_check Gawk gawk 4.0.1
ver_check GCC gcc 5.1
ver_check "GCC (C++)" g++ 5.1
ver_check Grep grep 2.5.1a
ver_check Gzip gzip 1.3.12
ver_check M4 m4 1.4.10
ver_check Make make 4.0
ver_check Patch patch 2.5.4
ver_check Perl perl 5.8.8
ver_check Python python3 3.4
ver_check Sed sed 4.1.5
ver_check Tar tar 1.22
ver_check Texinfo texi2any 5.0
ver_check Xz xz 5.0.0
ver_kernel &min-kernel;
if mount | grep -q 'devpts on /dev/pts' &amp;&amp; [ -e /dev/ptmx ]
then echo "OK: Linux Kernel supports UNIX 98 PTY";
else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
alias_check() {
if $1 --version 2>&amp;1 | grep -qi $2
then printf "OK: %-4s is $2\n" "$1";
else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
}
echo "Aliases:"
alias_check awk GNU
alias_check yacc Bison
alias_check sh Bash
echo "Compiler check:"
if printf "int main(){}" | g++ -x c++ -
then echo "OK: g++ works";
else echo "ERROR: g++ does NOT work"; fi
rm -f a.out</literal>
EOF
bash version-check.sh</userinput></screen>
</sect2>
</sect1>