a compilação falsa falha com “sh: / usr / bin / python2: Nenhum tal arquivo ou diretório”, embora exista um arquivo

1

Estou tentando instalar o tornado usando o mock, a partir do rpm de origem, em um contêiner Centos 7 lxc:

mock -r epel-7-x86_64 python-tornado-4.4.2-3.fc26.src.rpm

Tudo parece correr bem até que ele pare com o erro abaixo. Eu verifiquei se o arquivo existe:

# which python2
/usr/bin/python2

Este é o erro completo:

Finish: chroot init
Start: build phase for python-tornado-4.4.2-3.fc26.src.rpm
Start: build setup for python-tornado-4.4.2-3.fc26.src.rpm
sh: /usr/bin/python2: No such file or directory
sh: /usr/bin/python2: No such file or directory
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/python-tornado-4.4.2-3.el7.centos.src.rpm
Getting requirements for python-tornado-4.4.2-3.el7.centos.src
 --> python-devel-2.7.5-48.el7.x86_64
 --> python2-backports_abc-0.5-1.el7.noarch
 --> python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
Error: No Package found for python2-singledispatch
ERROR: Exception(/root/share/python-tornado-4.4.2-3.fc26.src.rpm) Config(epel-7-x86_64) 0 minutes 25 seconds
INFO: Results and/or logs in: /var/lib/mock/epel-7-x86_64/result
ERROR: Command failed: 
 # /usr/bin/yum-builddep --installroot /var/lib/mock/epel-7-x86_64/root/ --releasever 7 /var/lib/mock/epel-7-x86_64/root//builddir/build/SRPMS/python-tornado-4.4.2-3.el7.centos.src.rpm --setopt=tsflags=nocontexts
Getting requirements for python-tornado-4.4.2-3.el7.centos.src
 --> python-devel-2.7.5-48.el7.x86_64
 --> python2-backports_abc-0.5-1.el7.noarch
 --> python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
Error: No Package found for python2-singledispatch

This the output of build.log:

Mock Version: 1.3.3
ENTER ['do'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/python-tornado.spec'], chrootPath='/var/lib/mock/epel-7-x86_64/root'shell=FalseprintOutput=Trueenv={'LANG': 'en_IE.UTF-8', 'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOSTNAME': 'mock', 'PROMPT_COMMAND': 'printf "\033]0;<mock-chroot>\007"', 'HOME': '/builddir', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PS1': '<mock-chroot> \s-\v\$ '}gid=135user='mockbuild'timeout=0logger=<mockbuild.trace_decorator.getLog object at 0x1212a50>uid=0)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/python-tornado.spec'] with env {'LANG': 'en_IE.UTF-8', 'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOSTNAME': 'mock', 'PROMPT_COMMAND': 'printf "\033]0;<mock-chroot>\007"', 'HOME': '/builddir', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PS1': '<mock-chroot> \s-\v\$ '} and shell False
sh: /usr/bin/python2: No such file or directory
sh: /usr/bin/python2: No such file or directory
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/python-tornado-4.4.2-3.el7.centos.src.rpm
Child return code was: 0

Alguma idéia de por que não consegue encontrar o python2? Ou o erro é realmente algo completamente diferente? Obrigada!

rpm -qa | grep python-singledispatch
python-singledispatch-3.4.0.2-2.el7.noarch
    
por Nagev 27.02.2017 / 13:05

2 respostas

0

A resposta foi fornecida nos comentários. Apenas para completá-lo, encontrei o rpm de fonte de tornado correto para o CentOS 7 de link . O que deu o erro foi para o Fedora (o site que eu usei anteriormente não tinha um para o CentOS).

Agora, isso funciona:

mock -r epel-7-x86_64 python3-tornado-4.4.2-1.el7.src.rpm

A mensagem de erro foi enganosa.

    
por 28.02.2017 / 15:33
0
  • sh: /usr/bin/python2: No such file or directory

Isso é apenas um aviso e não está impedindo a execução. É causado quando uma macro de arquivo de especificação está tentando executar um comando python antes de o python ser instalado no chroot falso.

  • Error: No Package found for python2-singledispatch

Esse é o problema real. O Fedora mudou sua política de empacotamento do Python desde o EL7. Basicamente, agora você tem as versões de pacotes python2-$ xe python3-$ x, e o nome python-$ x não versionado é fornecido pelo pacote python2-$ x. Em algum momento no futuro, isso será alterado e python3- $ x fornecerá python- $ x. O arquivo de especificação do tornado F26 tinha um requisito de python2-singledispatch, que não é fornecido por nada no EL7. Uma solução que poderia ser sugerida ao mantenedor do Fedora é envolver o "2" em uma condicional que somente se expande no Fedora, assim: python%{?fedora:2}-singledispatch . Isso se expandirá para python2-singledispatch no Fedora, mas python-singledispatch no CentOS, que é o comportamento desejado.

    
por 29.05.2017 / 19:30