Сбой Devstack из-за несоответствия версии oslo.policy

Я пытаюсь установить devstack (стабильный/ньютон). Я получаю следующую ошибку:

Traceback (most recent call last):
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
2016-11-29 16:36:55.348 |     status = self.run(options, args)
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 335, in run
2016-11-29 16:36:55.348 |     wb.build(autobuilding=True)
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 749, in build
2016-11-29 16:36:55.348 |     self.requirement_set.prepare_files(self.finder)
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 380, in prepare_files
2016-11-29 16:36:55.348 |     ignore_dependencies=self.ignore_dependencies))
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 521, in _prepare_file
2016-11-29 16:36:55.348 |     req_to_install.check_if_exists()
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 1036, in check_if_exists
2016-11-29 16:36:55.348 |     self.req.name
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 558, in get_distribution
2016-11-29 16:36:55.348 |     dist = get_provider(dist)
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 432, in get_provider
2016-11-29 16:36:55.348 |     return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 968, in require
2016-11-29 16:36:55.348 |     needed = self.resolve(parse_requirements(requirements))
2016-11-29 16:36:55.348 |   File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 859, in resolve
2016-11-29 16:36:55.348 |     raise VersionConflict(dist, req).with_context(dependent_req)
2016-11-29 16:36:55.348 | ContextualVersionConflict: (oslo.policy 1.14.0 (/usr/local/lib/python2.7/dist-packages), Requirement.parse('oslo.policy>=1.15.0'), set(['neutron-lib']))

Я попытался обновить oslo.policy с помощью pip, но проблема не устранена. Любые указатели на то, как решить эту проблему?


person Pradeep    schedule 29.11.2016    source источник
comment
Вы пробовали установить нужную версию (›=1.15.0)? Если вышеуказанное не сработало, удалите пакеты python с помощью rm -rf /usr/local/lib/python2.7/dist-packages/*   -  person dpaks    schedule 30.11.2016


Ответы (1)


Это вызвано глобальным изменением требований. Некоторые проекты будут объединять требования быстрее, чем другие. Если вы еще этого не сделали, получите последний клон от мастера. Затем вы можете найти «oslo.policy>» и посмотреть, какой файл требований проекта снижает версию.

Чтобы увидеть номер версии, запустите эту команду в каталоге /opt/stack/:

    grep -r "oslo.policy>"

ПРИМЕЧАНИЕ. После этого решение будет работать только в то время, когда был задан вопрос. Следующее можно рассматривать как пример того, как сделать свои собственные команды grep и sed для выполнения обновлений. Цель состоит в том, чтобы все ваши файлы требований имели одну и ту же версию oslo.policy.

Я вижу, что версия 1.14.0 сбивает вас с толку, поэтому вы хотите сделать следующее:

    grep -r -l "oslo.policy>=1.14.0" | xargs -l sed -i -e "s/oslo.policy>=1.14.0/oslo.policy>=1.15.0/g"

Это сделает поиск и замену для вас. После этого вы должны убедиться, что файлы действительно были изменены, снова запустив первый grep. Возможно, вам придется изменить шаблон, чтобы он соответствовал версии, иногда это 1.14.0, а иногда это может быть просто 1.14.

Наконец, обновите oslo.policy и повторите попытку.

person Trevor McCasland    schedule 10.12.2016
comment
Работал как шарм. Дело было не только в oslo.policy, было много пакетов с несоответствием версий. Использовал приведенную выше команду для их решения. - person Pradeep; 04.01.2017
comment
привет, у меня та же проблема, я использовал эти команды, но когда я снова пытаюсь stack.sh, они возвращаются к более старым версиям. Есть мысли по этому поводу? - person Mheni; 03.07.2018
comment
@Mheni Итак, прежде всего, я бы попытался получить последние версии репозиториев, есть вероятность, что они уже обновили свои файлы требований, и эта проблема исправлена. Если вы работаете с мастером, есть небольшое окно, в котором это произойдет. 2-я команда больше не будет работать, ее нужно обновить. Если вы исследуете версию oslo.policy, указанную при выполнении 1-й команды, попробуйте изменить требования на последнюю версию в выходных данных grep. Вы можете изменить вторую команду в соответствии с вашими потребностями или просто отредактировать файлы самостоятельно. - person Trevor McCasland; 04.07.2018