Обновление Composer пытается удалить корневой пакет

Я пытаюсь установить 3 пакета, 1 из которых я разветвил на GitHub. Установка не выполняется, и в сообщении об ошибке говорится, что нужно удалить корневой пакет и ветку git, в которой я работаю (разрабатываю), что не имеет смысла.

Что я пробовал:

  • Удалите composer.lock
  • Удалить папку поставщика
  • Выполните команду composer clearcache
  • Примерьте пустой проект: работает

Таким образом, в пустом проекте он работает правильно, но не в другом моем проекте (esynaps / api-v2.e-synaps.com).

Сообщение об ошибке:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - don't install elasticsearch/elasticsearch 5.0.x-dev|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.0.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.1|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.2|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.3|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.2.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.3.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.3.1|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.3.2|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.3.2|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.3.1|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.3.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.2.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.3|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.2|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.1|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.1.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch v5.0.0|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch 5.3.3|remove esynaps/api-v2.e-synaps.com dev-develop
    - don't install elasticsearch/elasticsearch 5.0.x-dev|remove esynaps/api-v2.e-synaps.com dev-develop
    - Installation request for esynaps/api-v2.e-synaps.com dev-develop -> satisfiable by esynaps/api-v2.e-synaps.com[dev-develop].
    - Installation request for elasticsearch/elasticsearch ^5.0 -> satisfiable by elasticsearch/elasticsearch[5.0.x-dev, v5.0.0, v5.1.0, v5.1.1, v5.1.2, v5.1.3, v5.2.0, v5.3.0, v5.3.1, v5.3.2, 5.3.3].

Вот composer.json пустого проекта:

{
"name": "project/test",
"minimum-stability": "dev",
"prefer-stable": true,
"authors": [
    {
        "name": "my name",
        "email": "[email protected]"
    }
],
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/esynaps/elasticsearch-php"
    }
],
"require": {
    "ongr/elasticsearch-bundle": "^5.0",
    "ongr/elasticsearch-dsl": "^5.0",
    "elasticsearch/elasticsearch": "^5.0"
}
"replace": {
    "elasticsearch/elasticsearch": "dev-master"
}
}

Ссылка на форк: https://github.com/esynaps/elasticsearch-php

Вот composer.json целевого проекта:

{
"name": "esynaps/api-v2.e-synaps.com",
"license": "proprietary",
"type": "project",
"minimum-stability": "dev",
"prefer-stable": true,
"autoload": {
    "psr-4": {
        "": "src/"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    },
    "files": [
        "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
    ]
},
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/esynaps/elasticsearch-php"
    },
    {
        "type": "vcs",
        "url": "https://github.com/esynaps/neo4j-php-ogm"
    },
    {
        "type": "vcs",
        "url": "https://github.com/angelov/neo4j-symfony"
    }
],
"require": {
    "php": ">=7.1",
    "akeneo/spreadsheet-parser": "^1.2",
    "beberlei/DoctrineExtensions": "^1.0",
    "box/spout": "^2.7",
    "c0de8/matchmaker": "^2.0",
    "defuse/php-encryption": "^2.1",
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/orm": "^2.5",
    "friendsofsymfony/rest-bundle": "^2.2",
    "graphaware/neo4j-php-ogm": "dev-master",
    "incenteev/composer-parameter-handler": "^2.0",
    "jms/serializer-bundle": "^1.1",
    "justinrainbow/json-schema": "^5.2",
    "nelmio/api-doc-bundle": "dev-master",
    "nelmio/cors-bundle": "^1.5",
    "neo4j/neo4j-bundle": "dev-method-reset",
    "ongr/elasticsearch-bundle": "5.*",
    "ongr/elasticsearch-dsl": "5.*",
    "elasticsearch/elasticsearch": "5.*",
    "phpdocumentor/reflection-docblock": "*",
    "phpoffice/phpexcel": "^1.8",
    "piwik/device-detector": "^3.7",
    "ptrofimov/matchmaker": "*",
    "sensio/distribution-bundle": "^5.0.19",
    "sensio/framework-extra-bundle": "^5.0",
    "symfony/monolog-bundle": "^3.1.0",
    "symfony/polyfill-apcu": "^1.0",
    "symfony/swiftmailer-bundle": "^2.3.10",
    "symfony/symfony": "3.*",
    "twig/twig": "^1.0||^2.0"
},
"require-dev": {
    "behat/behat": "^3.3",
    "behat/mink": "^1.7",
    "behat/mink-browserkit-driver": "^1.3",
    "behat/mink-extension": "^2.2",
    "behat/mink-selenium2-driver": "^1.3",
    "behat/symfony2-extension": "^2.1",
    "phpunit/phpunit": "^6.3",
    "sensio/generator-bundle": "^3.0",
    "symfony/phpunit-bridge": "^3.3"
},
"replace": {
    "elasticsearch/elasticsearch": "dev-master"
},
"scripts": {
    "symfony-scripts": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "post-install-cmd": [
        "@symfony-scripts"
    ],
    "post-update-cmd": [
        "@symfony-scripts"
    ],
    "test": "phpunit",
    "assets": "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets"
},
"config": {
    "sort-packages": true
},
"extra": {
    "symfony-app-dir": "app",
    "symfony-bin-dir": "bin",
    "symfony-var-dir": "var",
    "symfony-web-dir": "web",
    "symfony-tests-dir": "tests",
    "symfony-assets-install": "relative",
    "incenteev-parameters": {
        "file": "app/config/parameters.yml"
    },
    "branch-alias": null
}
}

$ php -v

PHP 7.1.7 (cli) (built: Jul  6 2017 16:51:52) ( ZTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.7, Copyright (c) 1999-2017, by Zend Technologies

$ композитор -v

Composer version 1.6.5 2018-05-04 11:44:59

Вы пытались удалить composer.lock, а также папку vendor и выполнить новую установку композитора? файл блокировки может вызвать такие вещи

delboy1978uk 29.05.2018 10:22

Извините, я забыл об этом упомянуть: да, я также удалил composer.lock

Alex83690 29.05.2018 10:27

Какая у вас версия PHP (покажите результат php -v)? Чего вы пытаетесь достичь с помощью этой конфигурации replace?

rob006 29.05.2018 10:48

$ php -v PHP 7.1.7 (cli) (построено: 6 июля 2017 г., 16:51:52) (ZTS MSVC14 (Visual C++ 2015) x64) Авторское право (c) 1997-2017 гг. The PHP Group Zend Engine v3.1.0, Авторское право (c) 1998-2017 Zend Technologies с Zend OPcache v7.1.7, Copyright (c) 1999-2017, Zend Technologies

Alex83690 29.05.2018 10:52

У меня были конфликтные проблемы, «заменитель» их избегал. Просто попробовал без, тестовый проект продолжает работать. Еще одно причудливое поведение композитора.

Alex83690 29.05.2018 11:00

Какой конфликт? Этот параметр не предназначен для разрешения конфликтов.

rob006 29.05.2018 11:04

Спасибо, что поставили меня на путь. Я удалил объект «заменить» из своего проекта (api-v2), похоже, он работает. Когда я попробовал вчера, у меня возникли конфликты, я добавил замену, и у меня больше не было. Отправьте ответ, если хотите, чтобы я пометил его как принятый.

Alex83690 29.05.2018 11:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
326
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо rob006 за его помощь. Просто удалите свойство «заменить» в composer.json. Польза этого свойства была неправильно понята.

https://getcomposer.org/doc/04-schema.md#replace

Lists packages that are replaced by this package. This allows you to fork a package, publish it under a different name with its own version numbers, while packages requiring the original package continue to work with your fork because it replaces the original package.

Другие вопросы по теме