8

背景:我在我的台式机上使用 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 update”,它起作用了,但我不想更新我的 composer.lock 文件。

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

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

4

1 回答 1

1

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

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

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

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

于 2014-04-21T02:43:24.310 回答