Os(As) editores(as) do LFS recomendam que a CPU do sistema tenha pelo menos quatro núcleos e que o sistema tenha pelo menos oito (08) GB de memória. Os sistemas mais antigos que não atendam a essas exigências ainda funcionarão, porém o tempo para construir os pacotes será significantemente maior que o documentado.
Seu sistema anfitrião deveria ter o software seguinte com as versões mínimas indicadas. Isso não deveria ser um problema para a maioria das distribuições Linux modernas. Também, perceba que muitas distribuições colocarão cabeçalhos de aplicativos dentro de pacotes separados, frequentemente na forma de “<nome-pacote>-devel” ou “<nome-pacote>-dev”. Certifique-se de instalá-los se sua distribuição os fornecer.
Versões anteriores dos pacotes de software listados possivelmente funcionem, porém não foram testados.
Bash-3.2 (/bin/sh deveria ser um link simbólico ou real para bash)
Binutils-2.13.1 (Versões maiores que 2.41 não são recomendadas dado que elas não foram testadas)
Bison-2.7 (/usr/bin/yacc deveria ser um link para bison ou script pequeno que executa bison)
Coreutils-7.0
Diffutils-2.8.1
Findutils-4.2.31
Gawk-4.0.1 (/usr/bin/awk deveria ser um link para gawk)
GCC-5.1 incluindo o compilador C++, g++ (Versões maiores que 13.2.0 não são recomendadas dado que elas não foram testadas). As bibliotecas C e C++ padrão (com cabeçalhos) também precisam estar presentes, de forma que o compilador C++ possa construir aplicativos hospedados
Grep-2.5.1a
Gzip-1.3.12
Núcleo Linux-4.14
A razão para a exigência da versão do núcleo é a que nós especificamos essa versão quando da construção da glibc no Capítulo 5 e Capítulo 8, de forma que as soluções alternativas para os núcleos mais antigos não estão habilitadas e a glibc compilada é ligeiramente mais rápida e menor. Em junho de 2023, 4.14 é o lançamento mais antigo do núcleo ainda suportado pelos(as) desenvolvedores(as) do núcleo.
Se o núcleo do anfitrião for anterior a 4.14, [então] você precisará substituir o núcleo por uma versão mais atualizada. Existem duas maneiras de você fazer isso. Primeira, veja se seu fornecedor Linux fornece um pacote do núcleo 4.14 ou mais atual. Se sim, [então] você possivelmente deseje instalá-lo. Se seu fornecedor não oferecer um pacote de núcleo aceitável ou você preferisse não instalá-lo, [então] você mesmo(a) pode compilar um núcleo. Instruções para a compilação de núcleo e configuração de carregador de inicialização (presumindo que o anfitrião usa GRUB) estão localizadas no Capítulo 10.
Nós exigimos que o núcleo do anfitrião suporte o pseudo
terminal UNIX 98 (PTY). Ele deveria estar habilitado em todas
as distribuições desktop ou servidor que embarquem o Linux
4.14 ou um núcleo mais recente. Se você estiver construindo
um núcleo personalizado de anfitrião, certifique-se de que
CONFIG_UNIX98_PTYS
esteja
configurada como y
na
configuração do núcleo.
M4-1.4.10
Make-4.0
Patch-2.5.4
Perl-5.8.8
Python-3.4
Sed-4.1.5
Tar-1.22
Texinfo-5.0
Xz-5.0.0
Perceba que os links simbólicos mencionados acima são exigidos para construir um sistema LFS usando as instruções contidas neste livro. Links simbólicos que apontem para outro software (tais como dash, mawk, etc.) possivelmente funcionem, porém não são testados ou suportados pela equipe de desenvolvimento do LFS e possivelmente exijam ou desvio das instruções ou remendos adicionais para alguns pacotes.
Para ver se o seu sistema anfitrião tem todas as versões apropriadas e a habilidade de compilar aplicativos, execute os seguintes comandos:
cat > version-check.sh << "EOF"
#!/bin/bash
# Um script para listar os números de versão de ferramentas críticas de desenvolvimento
# Se você tiver ferramentas instaladas em outros diretórios, ajuste PATH
# aqui E em ~lfs/.bashrc (seção 4.4) também.
LC_ALL=C
PATH=/usr/bin:/bin
bail() { echo "FATAL: $1"; exit 1; }
grep --version > /dev/null 2> /dev/null || bail "grep não funciona"
sed '' /dev/null || bail "sed não funciona"
sort /dev/null || bail "sort não funciona"
ver_check()
{
if ! type -p $2 &>/dev/null
then
echo "ERRO: Não consigo encontrar $2 ($1)"; return 1;
fi
v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
then
printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0;
else
printf "ERRO: %-9s é MUITO ANTIGO ($3 ou mais recente exigido)\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 &>/dev/null
then
printf "OK: Núcleo Linux $kver >= $1\n"; return 0;
else
printf "ERRO: Núcleo Linux ($kver) é MUITO ANTIGO ($1 ou mais recente exigido)\n" "$kver";
return 1;
fi
}
# Coreutils primeiro, pois o sort precisa do Coreutils >= 7.0
ver_check Coreutils sort 7.0 || bail "--version-sort não suportada"
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 4.14
if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
then echo "OK: Núcleo Linux suporta UNIX 98 PTY";
else echo "ERRO: Núcleo Linux NÃO suporta UNIX 98 PTY"; fi
alias_check() {
if $1 --version 2>&1 | grep -qi $2
then printf "OK: %-4s is $2\n" "$1";
else printf "ERRO: %-4s NÃO é $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++ funciona";
else echo "ERRO: g++ NÃO funciona"; fi
rm -f a.out
EOF
bash version-check.sh