Как установить пакет в Laravel, который имеет более высокие требования к зависимости от версии, чем требования Laravel?

#laravel #dependencies #composer-php

Вопрос:

Я пытаюсь установить Rubix ML с последней версией Laravel. Проблема в том , что Laravel хочет более низкую версию league/filesystem , в то время как Rubix ML хочет более высокую версию.

Как я могу это исправить, не изменяя вручную каждый файл composer.json зависимостей, который в любом случае будет перезаписан в будущих обновлениях?

 Problem 1
    - Root composer.json requires rubix/ml ^0.4.0 -> satisfiable by rubix/ml[0.4.0].
    - rubix/ml 0.4.0 requires league/flysystem ~2.0.2 -> found league/flysystem[2.0.2, 2.0.3, 2.0.4] but the package is fixed to 1.1.3 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
 

Комментарии:

1. Почему бы не обновить league/flysystem ? В противном случае, почему бы не использовать rubix/ml в версии 0.2.4, которая, в конце концов, не требует Flysystem?

2. @NicoHaase Я не могу обновить league/flysystem , потому что Laravel composer требует более низкой версии, и это последняя версия Laravel. Я действительно видел, что могу использовать более низкую версию Rubix/ML , но я не хотел упускать какие-либо функции. Я хотел знать, есть ли способ использовать последние версии Rubix и Laravel и как-то согласовать зависимости.

3. Поскольку между Flysystem v1 и v2 существует множество критических изменений, я не вижу простого способа. Почему бы не спросить сопровождающих rubix/ml , могут ли они добавить поддержку v1?

4. @NicoHaase, безусловно, хорошая идея. Или попросите разработчиков Laravel перейти на версию v2. Я просто хотел спросить, есть ли у композитора способ каким-то образом согласовать это, чтобы его можно было использовать сразу. В то же время, я полагаю, что я просто буду использовать свою раздвоенную библиотеку Rubix ML с пониженной зависимостью и посмотрю, как это пойдет. Спасибо!

5. Нет, у Composer нет способа разрешить такие библиотечные конфликты. Если код несовместим, то код его несовместим

Ответ №1:

До сих пор мне удавалось разветвлять Rubix ML репо, изменять требования в соответствии Laravel с ними, а затем добавлять это репо на Github в composer. Я не уверен, что это что-нибудь сломает в Rubix ML, но, надеюсь, этого не произойдет. Я подожду, пока кто-нибудь даст лучший ответ, если он есть.

Как подтвердил @NicoHaase, похоже, что нет лучшего решения, кроме как попросить разработчиков Laravel или Rubix ML создать версии, совместимые со старой/новой Flysystem библиотекой.