【问题标题】:Composer fails to resolve to installable set of packages on using "install" but not "update"Composer 在使用“安装”而不是“更新”时无法解析可安装的软件包集
【发布时间】:2012-09-02 04:05:55
【问题描述】:

背景:我在我的台式机上使用 Silex 设置了一个新项目,并使用我需要的依赖项设置了我的 composer.json 文件。我在桌面上成功运行了“composer.phar install”,没有任何问题。

我切换到我的笔记本电脑继续进行该项目,将 git repo 克隆到笔记本电脑,并尝试执行“composer.phar install”但收到以下消息:

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

所以我改为执行“composer.phar 更新”,它有效,但我不想更新我的 composer.lock 文件。

还有其他人有这个问题吗?如果没有,有人可以解释我做错了什么吗?

编辑:我想我应该回到这个并更新问题。我已经很久没有遇到这个问题了。我不知道这是否是作曲家的更新修复了它(人们可能不得不发表评论让我知道他们是否仍然遇到这个问题)或者现在我已经了解了更多关于作曲家的信息,我只是以我没有遇到过的方式做事。不管怎样,我已经有将近一年半没有看到这条消息了,除非我在 composer.json 中的包规范实际上被破坏了。

【问题讨论】:

  • 请问您克隆项目时是否包含 vendor 文件夹以及 composer.lock 文件?通常当我更换机器时,我没有提交供应商文件夹或 .lock 文件,我要做的第一件事就是运行 composer.phar install
  • 我在 repo 中没有 vendor 文件夹,但我确实包含了 lock 文件,这样所有签出项目并安装依赖项的人都在同一个版本上。
  • Your requirements could not be resolved to an installable set of packages. 不是完整的错误消息。您能否提供准确的包冲突,然后显示?
  • 能否提供您的 composer.json 依赖项列表?你在使用私有仓库吗?

标签: php silex composer-php


【解决方案1】:

嗯,我猜你正在使用一个基于分支(dev-masterdev-branch-namebranch-name@dev)的库,维护者最近会强制推送(重新设置分支例如)。

尽可能尝试使用稳定的分支(版本链接到标签的分支(v1.0.0、1.0.* 等)。如果您不知道在哪里查看,您应该寻找你的包在Packagist上,并使用不是以dev-开头的版本,或者使用@dev修饰符将最小稳定性设置为dev

当然,有时这是不可避免的。但在这种情况下,您可以随时要求库的维护者标记版本。 :)

我的第二个猜测是你的机器上有不同的库版本。以symfony/icu 库为例。根据您计算机上的 Icu 版本,以及您启用的事实或您的计算机上是否安装了 intl 扩展的事实,您可能会遇到这些问题。 由于 composer 将尝试将 composer.lock 与您的旧机器匹配,因此依赖项将无法解决,因为锁定的包将需要您的系统没有的依赖项。 解决此问题的一种简单方法是安装所需的扩展。

【讨论】:

  • 我已经很久没有遇到这个问题了。我在使用 Composer 方面也很年轻。我想这可能正是这种情况。自从我开始使用标记版本以来,老实说这可能是更稳定的工作方式,我没有遇到过这个问题。我知道 Composer 应该通过锁定文件来管理它,但我发现我在使用真正的标记版本时取得了更大的成功,即使我使用通配符版本规范(即“1.*”或“1.1.*”)。感谢所有回复的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 2018-03-06
  • 1970-01-01
  • 2021-10-01
  • 2017-12-07
  • 2015-04-08
  • 2018-10-11
相关资源
最近更新 更多