2.2. Exigências do Sistema Anfitrião

2.2.1. Hardware

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.

2.2.2. Software

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.40 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-6.9

  • 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 12.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

  • Linux Kernel-3.2

    A razão para a exigência da versão do kernel é que nós especificamos essa versão quando da construção da glibc em Capítulo 5 e Capítulo 8, por recomendação dos(as) desenvolvedores(as).

    Se o kernel do anfitrião for anterior a 3.2, [então] você precisará substituir o kernel com uma versão mais atualizada. Existem duas maneiras de você fazer isso. Primeira, veja se seu fornecedor Linux fornece um pacote de kernel 3.2 ou mais atual. Se sim, [então] você possivelmente deseje instalá-lo. Se seu fornecedor não oferecer um pacote de kernel aceitável ou você preferisse não instalá-lo, [então] você mesmo(a) pode compilar um kernel. Instruções para a compilação de kernel e configuração de carregador de inicialização (presumindo que o anfitrião usa GRUB) estão localizadas em Capítulo 10.

  • 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-4.7

  • Xz-5.0.0

[Importante]

Importante

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
# Script simples para listar números de versão de ferramentas críticas de desenvolvimento
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERRO: /bin/sh não aponta para bash"
unset MYSH

echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1

if [ -h /usr/bin/yacc ]; then
  echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
  echo yacc is `/usr/bin/yacc --version | head -n1`
else
  echo "yacc não encontrado"
fi

echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1

if [ -h /usr/bin/awk ]; then
  echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
  echo awk é `/usr/bin/awk --version | head -n1`
else
  echo "awk não encontrado"
fi

gcc --version | head -n1
g++ --version | head -n1
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1  # versão texinfo
xz --version | head -n1

echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
  then echo "g++ compilação OK";
  else echo "g++ compilação falhou"; fi
rm -f dummy.c dummy
EOF

bash version-check.sh