4.5.4. Manuseio de hashbangs em scripts Python


No Red Hat Enterprise Linux 8, espera-se que scripts Python executáveis usem hashbangs (shebangs) especificando explicitamente pelo menos a versão principal do Python.

O script /usr/lib/rpm/redhat/brp-mangle-shebangs buildroot policy (BRP) é executado automaticamente ao construir qualquer pacote RPM, e tenta corrigir hashbangs em todos os arquivos executáveis. O script BRP irá gerar erros ao encontrar um script Python com um hashbang ambíguo, como por exemplo:

#! /usr/bin/pithon

ou

#! /usr/bin/env python

Para modificar hashbangs nos scripts Python causando estes erros de construção em tempo de construção RPM, use o script pathfix.py do pacote platform-python-devel:

pathfix.py -pn -i %{__python3} PATH..

Múltiplos PATHs pode ser especificado. Se um PATH é um diretório, pathfix.py escaneia recursivamente qualquer script Python que corresponda ao padrão ^[a-zA-Z0-9_] \.py$, não apenas aqueles com um hashbang ambíguo. Adicione este comando à seção %prep ou ao final da seção %install.

Alternativamente, modifique os scripts Python empacotados para que eles estejam de acordo com o formato esperado. Para este fim, pathfix.py também pode ser usado fora do processo de construção RPM. Ao rodar pathfix.py fora de uma construção RPM, substitua __python3 do exemplo acima com um caminho para o hashbang, tal como /usr/bin/python3.

Se os scripts Python empacotados exigirem a versão Python 2, substitua o número 3 por 2 nos comandos acima.

Adicionalmente, hashbangs no formulário /usr/bin/python3 são por default substituídos por hashbangs apontando para Python do pacote platform-python usado para ferramentas de sistema com o Red Hat Enterprise Linux.

Para alterar o hashbangs /usr/bin/python3 em seus pacotes personalizados para apontar para uma versão do Python instalada a partir do Application Stream, no formulário /usr/bin/python3.6, adicione o pacote python36-rpm-macros na seção BuildRequires do arquivo SPEC:

BuildRequires:  python36-rpm-macros
Nota

Para evitar verificação de hashbang e modificação pelo roteiro do BRP, use a seguinte diretiva RPM:

%undefine p_mangle_shebangs
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.