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
ou
#! /usr/bin/env python
15.4.4.1. Modificando hashbangs em scripts Python
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..
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.