2

Я пытаюсь установить торнадо, используя mock, из исходного rpm, в контейнер Centos 7 lxc:

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

Кажется, все идет хорошо, пока не остановится с ошибкой ниже. Я проверил, что файл существует:

# which python2
/usr/bin/python2

Вот полная ошибка:

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

Есть идеи, почему он не может найти python2? Или ошибка на самом деле что-то совсем другое? Спасибо!

rpm -qa | grep python-singledispatch
python-singledispatch-3.4.0.2-2.el7.noarch

2 ответа2

0
  • sh: /usr/bin/python2: No such file or directory

Это просто предупреждение и не останавливает выполнение. Это вызвано тем, что макрос spec-файла пытается выполнить команду python до того, как python будет установлен в фиктивном chroot.

  • Error: No Package found for python2-singledispatch

Это актуальная проблема. Fedora изменила свою упаковочную политику Python начиная с EL7. По сути, теперь у вас есть версии пакетов python2- $ x и python3- $ x, а неверсионное имя python- $ x предоставляется пакетом python2- $ x. В какой-то момент в будущем это будет изменено, и python3- $ x предоставит python- $ x. В файле спецификации торнадо F26 требовалось python2-singledispatch, которое не предусмотрено в EL7. Одно из решений, которое можно предложить сопровождающему Fedora, - заключить "2" в условие, которое распространяется только на Fedora, например: python%{?fedora:2}-singledispatch . Это расширится до python2-singledispatch на Fedora, но python-singledispatch на CentOS, что является желаемым поведением.

0

Ответ был предоставлен в комментариях. Чтобы завершить его, найдите правильный исходный код торнадо для RPOS CentOS 7 по адресу https://centos.pkgs.org/7/epel-x86_64/python34-tornado-4.4.2-1.el7.x86_64.rpm.html. Тот, который дал ошибку, был для Fedora (сайт, который я использовал ранее, не имел ни одного для CentOS).

Итак, теперь это работает:

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

Сообщение об ошибке вводило в заблуждение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .