2015-09-07 182 views
1

运行此composer require intervention/image抛出这个错误:作曲家依赖冲突

Using version ^2.3 for intervention/image 
./composer.json has been updated 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 

Problem 1 
- Conclusion: don't install intervention/image 2.3.1 
- Conclusion: don't install intervention/image 2.3.2 
- Installation request for intervention/image ^2.3 -> satisfiable by intervention/image[2.3.0, 2.3.1, 2.3.2]. 
- intervention/image 2.3.0 requires guzzlehttp/psr7 ~1.1 -> satisfiable by guzzlehttp/psr7[1.1.0, 1.2.0]. 
- guzzlehttp/psr7 1.1.0 requires psr/http-message ~1.0 -> satisfiable by psr/http-message[1.0]. 
- guzzlehttp/psr7 1.2.0 requires psr/http-message ~1.0 -> satisfiable by psr/http-message[1.0]. 
- Conclusion: don't install psr/http-message 1.0 


Installation failed, reverting ./composer.json to its original content. 

所以它是由暴食引起的(我使用"guzzlehttp/guzzle": "~5.3")。但是我不能(或者不想)将guzzle更新为6.0,因为它不是向后兼容的,所以我必须移动很多代码。我能做些什么,比如诀窍吗,还是必须更新guzzlehttp/guzzleintervention/image

+0

你的依赖在你的主应用上使用Guzzle吗?如果他们指定两个不同版本的Guzzle,你可能会遇到这个问题。 – Zarathuztra

回答

3

使用别名方法有一个严重的缺点:它不起作用!

我怀疑你对Guzzle 5的使用是你留言的原因,但对于更多的调查,我需要你的composer.json的内容,也可能是你的composer.lock文件。

这里添加的依赖不是太复杂。 intervention/image取决于guzzlehttp/psr7 ~1.1,这取决于psr/http-message ~1.0。 Guzzle软件包是一个全新的软件包,并没有与之前版本的Guzzle 5.x一起使用,PSR软件包也不会与任何内容相冲突 - 但这正是Composer所发现的。但是,在Composer中解密SAT求解器的错误消息并不容易。求解器可以轻松地为您创建适用于所有需求的解决方案,但查明故障非常困难。如果可能的话,作曲家会为你做。

有一个工具,可以帮助人类调试这样的情况:https://packagist.org/packages/clue/graph-composer

这是一个命令行工具,最好用composer global require clue/graph-composer安装,并且它也需要“graphviz的”安装。在你现有的项目中使用它将会揭示当前存在的所有包依赖关系,并且可能会给你一些线索可能是错误的。

+0

谢谢!这个反应确实有帮助,它很清楚和精确。无论如何,我切换到以前的干预/图像版本,在我的项目中使用最新版本并不重要。非常感谢! –

+0

@Sven谢谢你指出“线索/图形作曲家”。它是Composer依赖关系可视化的一个很好的工具。你知道有相同的工具,但没有沉重的“graphviz”依赖吗? –

+0

我认为目前没有任何产品能够像Graphviz那样绘制图表 - 至少不是在开源领域。关于如何绘制事物的许多知识都进入了该软件,因此可能并不是那么容易进行替换。另一方面,我没有将它安装在几个平台(即Linux和Windows)上的严重问题,并将其提供给图形编辑器软件包。 – Sven

0

是的。您可以尝试使用aliases。 这可能是这样的:

"guzzlehttp/guzzle": "~5.3 as 6.0"

+1

这是一个窍门,但它不会工作。你可以看看@Sven的回答 –

+0

好的,谢谢。我为我做了一个笔记。 –

0

您可以使用别名来欺骗作曲,以为狂饮的是V5.3.0实际上是V6.0。

定义"guzzlehttp/guzzle": "~5.3 as 6.0"将不起作用,因为这只是一个无效的字符串。你必须要具体说明的版本,并插入5.3.0,就像这样:

composer.json

{ 
    "require": { 
     "intervention/image": "^2.3", 
     "guzzlehttp/guzzle": "5.3.0 as 6.0" 
    } 
} 

你也可以更新你的代码guzzlehttp/guzzle V6的工作,但是这可能不是改变几个字符更多的工作在composer.json中。 )


It's a trick but it won't work. You can have a look at @Sven answer.

它相当明显,你没考什么我张贴。别名版本是完成它的一种方法。它不是解决所有依赖性问题的圣杯。它是解决版本冲突的简单方法。

[50.2MB/9.02s] - Installing react/promise (v2.2.1) 
[50.6MB/9.07s] Reading C:/Users/koch/AppData/Local/Composer/files/react/promise/3b6fca09c7d57fa8867c8dbe1abf648627.zip from cache 
[50.6MB/9.08s]  Loading from cache 
[50.6MB/9.08s]  Extracting archive 
[50.7MB/9.47s] 
[50.7MB/9.48s]  REASON: guzzlehttp/ringphp 1.1.0 requires react/promise ~2.0 -> satisfiable by react/promise[v2.0.0, v2.1.0, v2.2.0, v2.2.1]. 
[50.7MB/9.48s] 
[50.7MB/9.49s] - Installing guzzlehttp/streams (3.0.0) 
[50.7MB/9.53s] Reading C:/Users/koch/AppData/Local/Composer/files/guzzlehttp/streams/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5.zip from cache 
[50.7MB/9.54s]  Loading from cache 
[50.7MB/9.54s]  Extracting archive 
[50.7MB/9.92s] 
[50.7MB/9.93s]  REASON: guzzlehttp/ringphp 1.1.0 requires guzzlehttp/streams ~3.0 -> satisfiable by guzzlehttp/streams[3.0.0]. 
[50.7MB/9.93s] 
[50.7MB/9.94s] - Installing guzzlehttp/ringphp (1.1.0) 
[50.7MB/10.01s] Reading C:/Users/koch/AppData/Local/Composer/files/guzzlehttp/ringphp/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b.zip from cache 
[50.7MB/10.02s]  Loading from cache 
[50.7MB/10.02s]  Extracting archive 
[50.7MB/10.41s] 
[50.7MB/10.41s]  REASON: guzzlehttp/guzzle 5.3.0 requires guzzlehttp/ringphp ^1.1 -> satisfiable by guzzlehttp/ringphp[1.1.0]. 
[50.7MB/10.41s] 
[50.7MB/10.43s] - Installing guzzlehttp/guzzle (5.3.0) 
[50.7MB/10.49s] Reading C:/Users/koch/AppData/Local/Composer/files/guzzlehttp/guzzle/f3c8c22471cb55475105c14769644a49c3262b93.zip from cache 
[50.7MB/10.51s]  Loading from cache 
[50.7MB/10.51s]  Extracting archive 
[50.7MB/11.66s] 
[50.7MB/11.66s]  REASON: Required by root: Install command rule (install guzzlehttp/guzzle 5.3.0) 
[50.7MB/11.66s] 
[50.7MB/11.69s] - Installing psr/http-message (1.0) 
[50.7MB/11.77s] Reading C:/Users/koch/AppData/Local/Composer/files/psr/http-message/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298.zip from cache 
[50.7MB/11.78s]  Loading from cache 
[50.7MB/11.78s]  Extracting archive 
[50.7MB/11.91s] 
[50.7MB/11.91s]  REASON: guzzlehttp/psr7 1.2.0 requires psr/http-message ~1.0 -> satisfiable by psr/http-message[1.0]. 
[50.7MB/11.91s] 
[50.7MB/11.94s] - Installing guzzlehttp/psr7 (1.2.0) 
[50.7MB/11.98s] Reading C:/Users/koch/AppData/Local/Composer/files/guzzlehttp/psr7/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e.zip from cache 
[50.7MB/11.98s]  Loading from cache 
[50.7MB/11.98s]  Extracting archive 
[50.7MB/12.61s] 
[50.7MB/12.61s]  REASON: intervention/image 2.3.2 requires guzzlehttp/psr7 ~1.1 -> satisfiable by guzzlehttp/psr7[1.1.0, 1.2.0]. 
[50.7MB/12.61s] 
[50.7MB/12.64s] - Installing intervention/image (2.3.2) 
[50.7MB/12.73s] Reading C:/Users/koch/AppData/Local/Composer/files/intervention/image/1124ff3c6298f0dcf9edf9156623904d7a5c3428.zip from cache 
[50.7MB/12.74s]  Loading from cache 
[50.7MB/12.74s]  Extracting archive 
[50.7MB/14.72s] 
[50.7MB/14.72s]  REASON: Required by root: Install command rule (install intervention/image 2.3.0|install intervention/image 2.3.1|install intervention/image 2.3.2) 
[50.7MB/14.72s] 
[50.3MB/15.09s] intervention/image suggests installing ext-gd (to use GD library based image processing.) 
[50.3MB/15.10s] intervention/image suggests installing ext-imagick (to use Imagick based image processing.) 
[50.3MB/15.11s] intervention/image suggests installing intervention/imagecache (Caching extension for the Intervention Image library) 
[50.4MB/15.17s] Writing lock file 
+0

这是一个技巧,但它不会工作。你可以看看@Sven的答案 –

+0

看来你没有测试它:)让我们将这个composer.json作为事实的依据......我添加了安装日志。无论如何..很高兴你解决了这个问题:) –

+0

你是对的:),我没有测试过。现在我刚刚测试过,同样的问题,它不起作用。也许在一个新的项目上,但使用作曲家更新我有相同的文本完全相同的错误(我刚刚复制/粘贴你的代码和运行作曲家更新)。你有别的事吗? (或者有可能是我不明白的) –