composer global require терпит неудачу, когда не глобальный эквивалент завершается успешно - PullRequest
0 голосов
/ 06 мая 2018

Я разрабатываю пакет, доступный на packagist как пользователь / пакет. Установка локально работает просто отлично

composer require user/package

Создание нового проекта тоже хорошо

composer create-project --prefer-dist user/package new-project

Но пакет должен быть развернут глобально

composer global require user/package

однако это приводит к следующему журналу ошибок.

Изменен текущий каталог на /home/anders/.composer ./composer.json обновлен Загрузка репозиториев композитора с пакетом Информация Обновление зависимостей (включая require-dev) требования не могут быть разрешены для устанавливаемого набора пакетов.

Проблема 1 - Запрос на установку пользователя / пакета ^ v0.0.3 -> выполняется пользователем / пакетом [v0.0.3]. - Вывод: убрать подсветку / контейнер v5.5.2 - Вывод: не устанавливайте подсветку / контейнер v5.5.2 - не устанавливайте remaco / collect v5.4.33 | не устанавливайте laravel / framework v5.5.2 - не устанавливайте laravel / framework v5.5.2 | убирайте stretco / collect v5.4.33 - Запрос на установку подсветки / контейнера (установлен на v5.5.2) -> удовлетворяется подсветкой / контейнером [v5.5.2], Laravel / рамки [v5.5.2]. - Запрос на установку натягивания / сбора (установлен на v5.4.33) -> выполнимо с помощью затягивания / сбора [v5.4.33].

Установка не удалась, вернув ./composer.json к его оригиналу содержание.

Как это может быть?

  • Я пытался composer global clearcache
  • Удалил файл composer.lock, который я нашел прямо в /home/anders/.composer/
  • Обновил мои зависимости (Laravel) с 5.5.x до 5.6.x без эффекта
  • Даже создание нового проекта "laravel new blog" и загрузка в packagist завершается неудачно с тем же сообщением об ошибке.

Вот мой composer.json

{
    "name": "user/package",
    "description": "Package",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.0.0",
        "ajthinking/tinx": "^2.1",
        "fideloper/proxy": "~3.3",
        "guzzlehttp/guzzle": "^6.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~6.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "bin": [
        "package"
    ]    
}

Буду очень признателен за помощь в интерпретации журнала ошибок. Спасибо!

Обновление

Это содержимое /home/anders/.composer/

{
    "require": {
        "cpriego/valet-linux": "^2.0",
        "laravel/installer": "^1.4",
        "phpunit/phpunit": "^6.4",
        "phpunit/dbunit": "^3.0"
    }
}

Версия композитора: 1.6.5

1 Ответ

0 голосов
/ 07 мая 2018

Если это автономный инструмент, вы должны рассмотреть возможность создания PHAR для него. Вы можете использовать kherge/box для упрощения процесса сборки.

Архив PHAR полностью автономен, поэтому вы избавитесь от всех проблем с конфликтующими глобальными зависимостями. Это также может упростить установку (вам нужно просто скачать архив и сделать его исполняемым) для глобальной и локальной установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...