8.54.1. Instalação do Python 3
Primeiro, aplique um remendo para compatibilidade com OpenSSL 4:
patch -Np1 -i ../Python-3.14.7-openssl_4-1.patch
Prepare o Python para compilação:
./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
--enable-optimizations \
--without-static-libpython
O significado das opções do configure:
-
--with-system-expat
-
Essa chave habilita vinculação contra a versão de sistema do
Expat.
-
--enable-optimizations
-
Essa chave habilita etapas extensivas, porém consumidoras de
tempo, de otimização. O interpretador é construído duas
vezes; testes realizados na primeira construção são usados
para melhorar a versão otimizada final.
Compile o pacote:
make
Alguns testes são conhecidos por travarem, ocasionalmente,
indefinidamente. Portanto, para testar os resultados, execute a
suíte de teste, mas configure um limite de tempo de dois minutos
para cada caso de teste:
make test TESTOPTS="--timeout 120"
Para um sistema relativamente lento, você possivelmente precise
aumentar o limite de tempo e 1 UPC (medido ao construir a passagem
1 do Binutils com um núcleo da CPU) deveria ser suficiente. Alguns
testes são instáveis, de forma que a suíte de teste automaticamente
reexecutará testes falhos. Se um teste falhou, mas então passou
quando reexecutado, ele deveria ser considerado como passado.
Dois testes, test_urllib2 e
test_urllibnet, são conhecidos por
falharem porque a resolução de nomes não está configurada no
ambiente incompleto do LFS.
Instale o pacote:
make install
Nós usamos o comando pip3 para instalar programas e
módulos do Python 3 para todos(as) os(as) usantes como root em vários lugares neste livro. Isso
conflita com a recomendação dos(as) desenvolvedores(as) do Python:
instalar pacotes em um ambiente virtual ou no diretório lar de
um(a) usante regular (executando pip3 como esse(a) usante). Um
aviso multi linhas será deflagrado sempre que pip3 for emitido pelo(a) usante
root.
A razão principal para a recomendação é para evitar conflitos com o
gerenciador de pacote do sistema (dpkg, por exemplo). O LFS não tem
um gerenciador de pacote abrangente ao sistema, de modo que isso
não é um problema. Também, o pip3 verificará se existe uma
nova versão dele próprio sempre for executado. Uma vez que a
resolução de nome de domínio ainda não está configurada no ambiente
chroot do LFS, o pip3
não consegue verificar se existe uma nova versão dele próprio e
produzirá um aviso.
Depois que nós inicializarmos o sistema LFS e configurarmos uma
conexão de rede de intercomunicação, um aviso diferente será
emitido, informando para o(a) usante atualizar o pip3 a partir de uma roda pré
construída em PyPI (sempre que uma nova versão estiver disponível).
Porém, o LFS considera que o pip3 é uma parte do Python 3, de
modo que ele não deveria ser atualizado separadamente. Além disso,
uma atualização a partir de uma roda pré construída se desviaria do
nosso objetivo: construir um sistema Linux a partir do código
fonte. Assim, o aviso a respeito da nova versão do pip3 deveria ser ignorado também.
Se desejar, você pode suprimir todos esses avisos executando o
seguinte comando, o qual cria um arquivo de configuração:
cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
Importante
No LFS e no BLFS normalmente nós construímos e instalamos módulos
do Python com o comando pip3. Por favor, tenha certeza
de que os comandos pip3
install em ambos os livros sejam executados como
o(a) usante root (a menos que
seja para um ambiente virtual do Python). Executar pip3 install como um(a) usante
não root possivelmente aparente
funcionar, porém causará o módulo instalado ficar inacessível por
outros(as) usantes.
O pip3 install não
reinstalará um módulo já instalado automaticamente. Quando usar o
comando pip3
install para atualizar um módulo (por exemplo, de
meson-0.61.3 para meson-0.62.0), insira a opção --upgrade na linha de comando. Se
realmente for necessário desatualizar um módulo ou reinstalar a
mesma versão por alguma razão, [então] insira --force-reinstall --no-deps na
linha de comando.
Se desejado, então instale a documentação pré-formatada:
install -v -dm755 /usr/share/doc/python-3.14.7/html
tar --strip-components=1 \
--no-same-owner \
--no-same-permissions \
-C /usr/share/doc/python-3.14.7/html \
-xvf ../python-3.14.7-docs-html.tar.bz2
O significado dos comandos de instalação da
documentação:
-
--no-same-owner
e --no-same-permissions
-
Garanta que os arquivos instalados tenham a titularidade de
propriedade e as permissões corretas. Sem essas opções, o
tar instalará os arquivos de
pacote com os valores do(a) criador(a) desenvolvedor(a).