作曲家全局要求失败,非全局等效成功

时间:2018-05-06 17:37:21

标签: php laravel composer-php

我正在开发packagist的软件包作为用户/包。在本地安装它可以正常工作

composer require user/package

创建一个新项目也很好

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

但该套餐将全球部署

composer global require user/package

然而,这会导致以下错误日志。

  

将当前目录更改为/home/anders/.composer ./composer.json   已更新使用包装载composer存储库   信息更新依赖项(包括require-dev)您的   要求无法解析为可安装的软件包。

     

问题1        - 用户/包的安装请求^ v0.0.3 - >用户/包[v0.0.3]可以满足。        - 结论:删除照明/容器v5.5.2        - 结论:不要安装照明/容器v5.5.2        - 不要安装tightenco / collect v5.4.33 |不要安装laravel / framework v5.5.2        - 不要安装laravel / framework v5.5.2 | remove tightenco / collect v5.4.33        - 照明/容器的安装要求(安装在v5.5.2) - >可以通过illuminate / container [v5.5.2]来满足,   laravel /框架[v5.5.2]。        - tightenco / collect的安装要求(安装在v5.4.33) - > tightenco / collect [v5.4.33]可以满足。

     

安装失败,将./composer.json恢复为原始版本   内容。

这怎么可能?

  • 我试过composer global clearcache
  • 删除了我直接在/home/anders/.composer /
  • 下找到的composer.lock文件
  • 将我的依赖项(Laravel)从5.5.x升级到5.6.x但没有效果
  • 甚至创建一个新的" laravel新博客"项目和上传到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 :(得分:1)

如果这是独立工具,您应该考虑为其构建PHAR。您可以使用kherge/box来简化构建过程。

PHAR存档完全独立,因此您可以解决所有与冲突的全局依赖关系的问题。它还可以简化全局和本地安装的安装(您只需要下载存档并使其可执行)。