15.4.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 gera erros ao encontrar um script Python com um hashbang ambíguo, como por exemplo:
#! /usr/bin/pithon
#! /usr/bin/pithon
ou
#! /usr/bin/env python
#! /usr/bin/env python
15.4.4.1. Modificando hashbangs em scripts Python Copiar o linkLink copiado para a área de transferência!
Para modificar os hashbangs nos scripts Python que causam os erros de construção no tempo de construção RPM, use este procedimento.
Procedimento
Aplique o script
pathfix.py
do pacoteplatform-python-devel
:pathfix.py -pn -i %{__python3} PATH..
# pathfix.py -pn -i %{__python3} PATH..
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note que múltiplos
PATHs
pode ser especificado. Se umPATH
é 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 uma versão diferente da Python 3.6, ajuste os comandos acima para incluir a respectiva versão.