Вопрос

Я хочу использовать модуль SilverStripe «sheadawson/silverstripe-blocks dev-master».Когда я устанавливаю его с помощью композитора, мне пришлось установить некоторые модули, такие как multivaluefield и т. д.Я их установил без проблем.Теперь я получаю следующий вывод терминала:

Pascal@Nemesis:~/Sites/xyz$ composer require sheadawson/silverstripe-blocks dev-master
./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
- Installation request for silverstripe/cms 1.0.0 -> satisfiable by silverstripe/cms[1.0.0].
- sheadawson/silverstripe-blocks dev-master requires silverstripe/cms 3.1.* -> satisfiable by silverstripe/cms[3.1.0, 3.1.1, 3.1.2].
- Can only install one of: silverstripe/cms[3.1.0, 1.0.0].
- Can only install one of: silverstripe/cms[3.1.1, 1.0.0].
- Can only install one of: silverstripe/cms[3.1.2, 1.0.0].
- Installation request for sheadawson/silverstripe-blocks dev-master -> satisfiable by sheadawson/silverstripe-blocks[dev-master].

Я вижу, что зависимость 3.1.* приводит к трем возможным версиям.А вот версия cms 1.0.0 меня немного запутывает так как у меня нет ниоткуда зависимости от этой версии.

Когда я хочу установить версию 3.1.2 с помощью

composer require silverstripe/cms 3.1.2

я получаю следующий вывод:

Pascal@Nemesis:~/Sites/xyz$ composer require silverstripe/cms 3.1.2
./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
- Installation request for silverstripe/cms 1.0.0 -> satisfiable by silverstripe/cms[1.0.0].
- Can only install one of: silverstripe/cms[3.1.2, 1.0.0].
- Installation request for silverstripe/cms 3.1.2 -> satisfiable by silverstripe/cms[3.1.2].

Содержимое моего файла композитора.json выглядит следующим образом:

{
    "name": "silverstripe/cms",
    "type": "silverstripe-module",
    "description": "The SilverStripe Content Management System",
    "homepage": "http://silverstripe.org",
    "license": "BSD-3-Clause",
    "keywords": ["silverstripe", "cms"],
    "authors": [
        {
            "name": "SilverStripe",
            "homepage": "http://silverstripe.com"
        },
        {
            "name": "The SilverStripe Community",
            "homepage": "http://silverstripe.org"
        }
    ],
    "require": {
        "php": ">=5.3.2",
        "ajshort/silverstripe-gridfieldextensions": "dev-master",
        "silverstripe/multivaluefield": "dev-master"
    }
}

Кто-нибудь знает, почему композитор хочет также установить версию 1.0.0 cms?Я уже пробовал удалять все модули, чистить композитор.json, удалять композитор.лок, обновление композитора и все остальное, что мне приходило в голову.

Это было полезно?

Решение

Ваш композитор.json выглядит так, будто это файл из этой CMS, а не из вашего собственного программного обеспечения.

И если это так, то меня не удивляет, что Композитор в замешательстве.В этом композиторе.json вы заявляете, что «silverstripe/cms» — это ВАШЕ программное обеспечение.А если вы пометили свое программное обеспечение как версию 1.0.0, вы создали «silverstripe/cms 1.0.0» — любое необходимое программное обеспечение, которому требуется более высокая версия, теперь не может работать.

Обычно, если вы начинаете использовать Composer, рекомендуется запустить composer init в главном каталоге вашего программного обеспечения, а затем в интерактивном режиме ответьте на несколько вопросов о ВАШЕМ программном обеспечении.

В самом простом случае вы создаете пустой файл composer.json, и добавьте пару фигурных скобок, а затем введите ключ «require» и необходимое программное обеспечение.

Чего НИКОГДА не следует делать:Скопируйте композитор.json от кого-либо еще, не исправив всех проблем.Я не знаю, что вы сделали, чтобы получить текущую версию, но думаю, вы, вероятно, клонировали какой-то репозиторий, чтобы запустить свой проект.Это не совсем неправильно, но тогда кто-то должен улучшить этот рабочий процесс, чтобы избежать проблем с Composer.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top