Задать вопрос
ZAYEC77
@ZAYEC77
web-developer

Почему composer не может решить зависимости?

Доброго времени суток.
Делаю несколько связаных composer пакетов.
Хочу установить в проект один из них: composer require nullref/yii2-cms
Получаю ошибку:
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - nullref/yii2-cms dev-master requires nullref/yii2-admin dev-master -> satisfiable by nullref/yii2-admin[dev-master].
    - nullref/yii2-cms v0.0.2 requires nullref/yii2-admin dev-master -> satisfiable by nullref/yii2-admin[dev-master].
    - nullref/yii2-admin dev-master requires nullref/yii2-sb-admin-2 dev-master -> satisfiable by nullref/yii2-sb-admin-2[dev-master].
    - Conclusion: don't install nullref/yii2-sb-admin-2 dev-master
    - Installation request for nullref/yii2-cms >=0.0.2 -> satisfiable by nullref/yii2-cms[dev-master, v0.0.2].

Подскажите, пожалуйста, что делаю не так.

PS:Извините, за довольно глупый вопрос, просто нужен взгляд со стороны.
  • Вопрос задан
  • 4242 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@SilverSlice
Коротко: используйте только стабильные релизы при указании версий в зависимостях в своих пакетах.

Подробно.
В composer есть флаг minimum-stability, который используется для отбора пакетов на основе стабильности при установке. По умолчанию он равен stable, т.е. устанавливаются только стабильные пакеты. Вы можете изменить это поведение, добавив параметр "minimum-stability" в composer.json. Обратите внимание, что этот параметр применяется только к корневому пакету - вашему основному composer.json файлу.

Что происходит, когда вы вводите команду composer require nullref/yii2-cms:
  • Создается composer.json файл, в котором не определен minimum-stability, поэтому он рассматривается как stable.
  • В корневом пакете у вас определен в зависимостях только один пакет - nullref/yii2-cms, который имеет стабильный релиз - он и начинает устанавливаться.
  • Пакет nullref/yii2-cms имеет в зависимостях пакет nullref/yii2-admin с версией dev-master. Это нестабильный релиз и он не может быть установлен, т.к. в корневом пакете minimum-stability считается равным stable.

Что можно сделать:
  • Установить minimum-stability в dev в корневом composer.json файле. В этом случае также следует добавить "prefer-stable": true, чтобы по возможности ставились стабильные пакеты.
  • Использовать stability flags, явно указав флаг в корневом пакете: "nullref/yii2-admin": "@dev".
  • Убрать dev-master отовсюду из зависимостей, выпускать релизы и указывать версии любым из доступных способов.

И в заключение привожу ссылку на статью с подробным объяснением minimum-stability.
Ответ написан
Он у вас конфликтует с одним из пакетов, что бы понять с каким именно — нужно увидеть сам файл composer'а
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы