Composer要求无法安装包

时间:2014-11-21 16:42:42

标签: php dependencies composer-php

我有一个带有composer的项目,需要在主项目composer.json文件中使用vendor / package-1,vendor / package-1需要package-1的composer.json中的vendor / package-2。我目前安装了vendor / package-1的1.18.11版和vendor-package-2的2.3.2版。我想更新到新的vendor / package-1版本1.19。*(需要版本2.4。*来自vendor / package-2)并执行:

composer require vendor/package-1:1.19.*

失败,我得到的输出是

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
    - vendor/package-1 v1.19.2 requires vendor/package2 2.4.* -> satisfiable by vendor/package2[v2.4.3, v2.4.0, v2.4.1, v2.4.2].
    - vendor/package-1 v1.19.1 requires vendor/package2 2.4.* -> satisfiable by vendor/package2[v2.4.3, v2.4.0, v2.4.1, v2.4.2].
    - vendor/package-1 v1.19.2 requires vendor/package2 2.4.* -> satisfiable by vendor/package2[v2.4.3, v2.4.0, v2.4.1, v2.4.2].
    - Can only install one of: vendor/package2[v2.3.2, v2.4.3].
    - Can only install one of: vendor/package2[v2.4.0, v2.3.2].
    - Can only install one of: vendor/package2[v2.4.1, v2.3.2].
    - Can only install one of: vendor/package2[v2.4.2, v2.3.2].
    - Can only install one of: vendor/package2[v2.4.3, v2.3.2].
    - Installation request for vendor/package2 == 2.3.2.0 -> satisfiable by vendor/package2[v2.3.2].
    - Installation request for vendor/package-1 1.19.* -> satisfiable by vendor/package-1[v1.19.1, v1.19.2].

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

组合器是否需要为所有依赖项指定命令?如果我试试

composer require vendor/package-1:1.19.* vendor/package-2:2.4.*

它有效,但不需要指定每个依赖项,对吧?

2 个答案:

答案 0 :(得分:3)

似乎vendor / package2在固定版本中需要为2.3.2或2.3。*且无法更新为2.4。

通常,您应该尝试放宽版本要求以允许兼容的更新。为此使用波浪号运算符,要求package2为~2.3(最小2.3,更新,只要它不是不兼容的版本3)。这同样适用于package1:如果你需要1.19行中包含的功能,你需要~1.19。

答案 1 :(得分:1)

这应该是可以的:

composer require vendor/package-1:1.19.* --update-with-dependencies