【问题标题】:Devstack fails with oslo.policy version mismatchDevstack 因 oslo.policy 版本不匹配而失败
【发布时间】:2016-11-29 16:36:47
【问题描述】:

我正在尝试安装 devstack(stable/newton)。我收到以下错误:

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']))

我尝试使用 pip 升级 oslo.policy,但问题仍然存在。 有关如何解决此问题的任何指示?

【问题讨论】:

  • 您是否尝试安装所需的版本 (>=1.15.0)?如果上述方法不起作用,则使用 rm -rf /usr/local/lib/python2.7/dist-packages/* 删除 python 包

标签: devstack oslo


【解决方案1】:

这是由全局需求更改引起的。有些项目会比其他项目更快地合并需求。如果您还没有这样做,请从 master 获取最新的克隆。然后,您可以 grep 查找“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 并重试。

【讨论】:

  • 工作就像一个魅力。不仅是 oslo.policy,还有很多包版本不匹配。使用上述命令解决它们。
  • 嗨,我遇到了同样的问题,我使用了这些命令,但是当我再次尝试 stack.sh 时,它会将它们设置回旧版本。对此有什么想法吗?
  • @Mheni 所以首先我会尝试获取最新版本的存储库,他们现在有可能更新了他们的需求文件并且这个问题得到了解决。如果您正在使用 master ,则有一个小窗口会发生这种情况。第二个命令将不再起作用,需要更新。如果您调查通过运行第一个命令给出的 oslo.policy 版本,请尝试在 grep 的输出中将要求更改为最新版本。您可以修改第二个命令以满足您的需要,也可以自己编辑文件。
猜你喜欢
  • 2021-12-01
  • 2017-02-11
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
相关资源
最近更新 更多