【问题标题】:sylius/web-bundle with knplabs/knp-menu-bundle version 2带有 knplabs/knp-menu-bundle 版本 2 的 sylius/web-bundle
【发布时间】:2014-03-10 12:57:13
【问题描述】:

我需要将Sylius 集成到现有的Symfony 2.4 项目中。 这个项目已经有一个依赖列表,我在其中添加了 Sylius 依赖。一切正常,但有一个依赖项:项目使用的knplabs/knp-menu-bundle 是2.0.*@dev,sylius/web-bundle 所需的捆绑包版本是1.1.*。

现在,当尝试运行 composer install --prefer-dist 时,显然会产生冲突:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- sylius/web-bundle 1.0.x-dev requires knplabs/knp-menu-bundle 1.1.* -> satisfiable by knplabs/knp-menu-bundle[1.1.x-dev].
- sylius/web-bundle 1.0.x-dev requires knplabs/knp-menu-bundle 1.1.* -> satisfiable by knplabs/knp-menu-bundle[1.1.x-dev].
- Conclusion: don't install knplabs/knp-menu-bundle 1.1.x-dev
- Installation request for sylius/web-bundle 1.0.*@dev -> satisfiable by sylius/web-bundle[1.0.x-dev].

删除以下明确提及将使作曲家工作和结帐版本1.1(根据网络捆绑包的要求):

    "knplabs/knp-menu":                         "2.0.*@dev",
    "knplabs/knp-menu-bundle":                  "2.0.*@dev",

但是,当然,在应用程序中给了我错误,因为原始应用程序需要版本 2 中的逻辑。

这是我的全部composer.json:http://pastebin.com/V36jy93p

我最好如何解决这个问题?我可以让 Sylius 网络包使用 knp-menu-bundle 版本 2 吗?

【问题讨论】:

  • 您可以尝试使用内联别名 2.0.*@dev as 1.1.2。但这不会让您注意删除方法/类等代码更改。

标签: symfony composer-php sylius


【解决方案1】:

可能主要错误是使用了仅具有开发稳定性的包。从我在 packagist.org 上看到的情况来看,“knplabs/knp-menu-bundle”在 9 个多月前发布了 alpha 版本,而开发分支最后一次提交仅在一周前。我不知道这是否能告诉我一些信息,但我认为开发人员可能会发现他们的软件尚未准备好投入生产使用,因此可能会建议使用较旧的 1.x 版本。

如果他们认为这是真的,那么来自这些人的同一个软件“sylius/web-bundle”只依赖于旧版本,而这完全符合那幅画。该软件的依赖并没有在新版本中发布,因此无需同时发布该软件的新包。

请注意,以前版本的“sylius/web-bundle”实际上确实依赖于 2.0.*-dev 版本的“knplabs/knp-menu-bundle”,但我想知道为什么他们在以后的版本中退出了该版本.它可能引发了太多问题,跟踪正在进行的开发导致 9 个月没有发布软件。

一般来说,我会说您的 composer.json 包含太多的“dev-master”和“@dev”版本,无法解析成一堆稳定的依赖项。

但是你能做什么呢?将“knplabs/knp-menu-bundle”别名为 1.1.x 版本可能会有所帮助。您可能会很快发现由于不兼容的类而这将破坏哪些软件依赖项 - 在最坏的情况下,只有在您将代码推送到生产环境后才能发现(您确实需要进行测试,不是吗)。

您还可以向“sylius/web-bundle”的开发人员提出问题,以发布依赖于“knplabs/knp-menu-bundle”的 2.0.x-dev 版本的版本。

另一种方法是克隆“sylius/web-bundle”项目,在他们的 composer.json 中更改依赖于“knplabs/knp-menu-bundle”的那一行,修复由于该更改而可能发出的任何问题,创建对具有此更改的原始项目的拉取请求,在此之前,您可以通过将 Github URL 添加到 composer.json 的 repositories 部分来包含您自己的存储库而不是原始存储库。

您也可以尝试说服“knplabs/knp-menu-bundle”的人标记另一个版本,以便更多的包能够依赖于该新标签而不是不依赖于开发分支(这样做会破坏出乎意料的事情,如果您发布稳定的软件,这是不行的)。之后再次触发“sylius/web-bundle”以尝试使用该新版本。

如果一切都失败了,最后一个选项:不要使用“sylius/web-bundle”。或者不要使用“knplabs/knp-menu-bundle”版本 2.0.x-dev。

【讨论】:

  • 感谢您精心回答的 Sven,我可以看到您花时间写您的回复,我非常感谢。我将浏览这些选项,看看什么最适合我。克隆 sylius/web-bundle 并将其更新为使用菜单包的版本 2 将使我失去更新 web-bundle 的能力,但我想这比从项目中完全删除它要好。
猜你喜欢
  • 2016-01-07
  • 2015-01-31
  • 2012-12-08
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多