но они противоречат вашим требованиям или минимальной стабильности

Я создаю свой собственный slackbot. Я решил использовать проект в качестве библиотеки, чтобы помочь мне.

https://github.com/sagebind/slack-client/issues?utf8=%E2%9C%93&q=stability

Теперь мне нужно установить его с композитором.

Поэтому я использовал команду: composer require coderstephen/slack-client

... И я получаю сообщение об ошибке:

 Problem 1
    - Installation request for coderstephen/slack-client ^0.3.0 -> satisfiable by coderstephen/slack-client[v0.3.0].
    - coderstephen/slack-client v0.3.0 requires devristo/phpws dev-master -> satisfiable by devristo/phpws[dev-master] but these conflict with your requirements or minimum-stability.

Хорошо. Тогда я решил изменить уровень стабильности на "dev" в моем composer.lock:

"aliases": [],
    "minimum-stability": "dev",
    "stability-flags": {
        "devristo/phpws": 20
    },
    "prefer-stable": true,
    "prefer-lowest": false,
    "platform": {
        "php": ">=5.5"
    },
    "platform-dev": []

Теперь у меня заканчиваются идеи о том, что делать. README говорит, что нужно сделать этот шаг в composer.json, но таких настроек нет:

Обратите внимание, что текущая версия имеет нестабильные зависимости.

Чтобы установить эти зависимости, вы можете установить "минимальную стабильность" в своем composer.json и порекомендовать установить "prefer-stable":

Мой композитор.json:

{
    "name": "coderstephen/slack-client",
    "keywords": ["slack", "api", "realtime"],
    "license": "MIT",
    "description": "A better Slack client, with RTM API support",
    "authors": [{
        "name": "Stephen Coakley",
        "email": "[email protected]"
    }],
    "require": {
        "php": ">=5.5",
        "devristo/phpws": "dev-master",
        "evenement/evenement": "2.0.*",
        "guzzlehttp/guzzle": "~6.0",
        "react/event-loop": "^0.4.1",
        "react/promise": "^2.2"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.6",
        "fzaninotto/faker": "~1.4",
        "apigen/apigen": "^4.1"
    },
    "autoload": {
        "psr-4": {
            "Slack\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Slack\\Tests\\": "tests"
        }
    }
}

Кто-нибудь знает некоторые решения, которые я мог бы попробовать?

Ответы

Ответ 1

Добавьте minimum-stability и prefer-stable для вашего composer.json (not composer.lock):

{
    "name": "coderstephen/slack-client",
    "keywords": ["slack", "api", "realtime"],
    "license": "MIT",
    "description": "A better Slack client, with RTM API support",
    "authors": [{
        "name": "Stephen Coakley",
        "email": "[email protected]"
    }],
    "require": {
        "php": ">=5.5",
        "devristo/phpws": "dev-master",
        "evenement/evenement": "2.0.*",
        "guzzlehttp/guzzle": "~6.0",
        "react/event-loop": "^0.4.1",
        "react/promise": "^2.2"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.6",
        "fzaninotto/faker": "~1.4",
        "apigen/apigen": "^4.1"
    },
    "autoload": {
        "psr-4": {
            "Slack\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Slack\\Tests\\": "tests"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

Ответ 2

Вы никогда не должны вручную редактировать файл composer.lock - это автоматически сгенерированный файл.

Похоже, вы показали файл composer.json пакета, который вы пытаетесь использовать, а не собственный проект composer.json. Свойства prefer-stable и minimum-stability должны быть добавлены в файл корневого файла project project.json:

{
  "name": "xFlare/slack-bot",
  "description": "xFlare Slack bot project",
  "authors": [
    {
      "name": "xFlare"
    }
  ],
  "minimum-stability": "dev",
  "prefer-stable": true,
  "require": {
    "php": ">=5.5",
    "coderstephen/slack-client": "^0.3.0"
  }
}

Ответ 3

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

$ composer config minimum-stability dev

$ composer config prefer-stable true

Теперь вы можете запросить и обновить пакет:

$ composer require --no-update "vendor/package-name:version"

$ composer update

Доступные опции (в порядке стабильности): dev, alpha, beta, RC и stable

Ответ 5

Я должен был выполнить команду глобально, иначе она не работала, редактируя файл вручную или вводя команду

composer global config minimum-stability dev
composer global config prefer-stable true

Ответ 6

Обычно эта проблема не имеет ничего общего с опцией минимальной стабильности или предпочтительной стабильности, но дело в том, что вы уже используете какую-то библиотеку прямо или косвенно, что необходимо в другой используемой вами библиотеке, но в более высокой версии.

Мой случай: я установил Codeception, но мне потребовался PHPUnit 4, но для Codeception требовался как минимум phpunit 6 - до 8. В то время как phpunit 6 поддерживал только php7.0, поэтому мне пришлось явно увеличить используемую версию phpunit с 4 до 6, чтобы код библиотеки мог работать с ним.

Вы можете спросить, может ли это повлиять на ваш проект, который уже опирается на более низкую версию библиотеки, возможно, могут быть какие-то критические изменения, но я не знаю, может ли быть какой-то обходной путь для использования одной версии для зависимости и другой версии для собственный проект.

Редактировать: мне также пришлось выполнить команду удаления composer для phpunit, в противном случае я не смог напрямую увеличить версию phpunit