简体   繁体   English

composer global require在非全局等效成功的地方失败

[英]composer global require fails where non global equivalent succeeds

Im developing a package available at packagist as user/package. 我正在开发一个包装,作为用户/包装。 Installing it locally works just fine 在本地安装它可以正常工作

composer require user/package

Creating a new project is also fine 创建一个新项目也没关系

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

But the package is to be deployed globally 但该套餐将在全球部署

composer global require user/package

however this results in the following error log. 但是这会导致以下错误日志。

Changed current directory to /home/anders/.composer ./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. 将当前目录更改为/home/anders/.composer ./composer.json已更新使用包信息加载composer存储库更新依赖项(包括require-dev)无法将您的需求解析为可安装的软件包集。

Problem 1 - Installation request for user/package ^v0.0.3 -> satisfiable by user/package[v0.0.3]. 问题1 - 用户/包的安装请求^ v0.0.3 - >用户/包[v0.0.3]可满足。 - Conclusion: remove illuminate/container v5.5.2 - Conclusion: don't install illuminate/container v5.5.2 - don't install tightenco/collect v5.4.33|don't install laravel/framework v5.5.2 - don't install laravel/framework v5.5.2|remove tightenco/collect v5.4.33 - Installation request for illuminate/container (installed at v5.5.2) -> satisfiable by illuminate/container[v5.5.2], laravel/framework[v5.5.2]. - 结论:删除illuminate / container v5.5.2 - 结论:不要安装illuminate / container 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) - >可通过照亮/容器[v5.5.2],laravel / framework [v5.5.2]来满足。 - Installation request for tightenco/collect (installed at v5.4.33) -> satisfiable by tightenco/collect[v5.4.33]. - tightenco / collect的安装要求(安装在v5.4.33) - > tightenco / collect [v5.4.33]可满足。

Installation failed, reverting ./composer.json to its original content. 安装失败,将./composer.json恢复为原始内容。

How can this be? 怎么会这样?

  • I have tried composer global clearcache 我尝试过composer global clearcache
  • Deleted a composer.lock file I found directly under /home/anders/.composer/ 删除了我直接在/home/anders/.composer/下找到的composer.lock文件
  • Upgraded my dependencies (Laravel) from 5.5.x to 5.6.x with no effect 将我的依赖项(Laravel)从5.5.x升级到5.6.x但没有任何效果
  • Even creating a fresh "laravel new blog" project and uploading to packagist fails with the same error message. 即使创建一个新的“laravel新博客”项目并上传到packagist失败也会出现相同的错误消息。

Here is my composer.json 这是我的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"
    ]    
}

Would really appreciate help interpreting the error log. 非常感谢帮助解释错误日志。 Thanks! 谢谢!

Update 更新

This is the content of /home/anders/.composer/ 这是/home/anders/.composer/的内容

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

Composer version: 1.6.5 作曲家版:1.6.5

If this is standalone tool, you should consider building PHAR for it. 如果这是独立工具,您应该考虑为它构建PHAR You can use kherge/box to simplify build process. 您可以使用kherge/box来简化构建过程。

PHAR archive is completely standalone, so you'll get rid of all problems with conflicting global dependencies. PHAR存档是完全独立的,因此您将摆脱所有与冲突的全局依赖关系的问题。 It may also simplify installation (you need to just download archive and make it executable) for both global and local installation. 它还可以简化全局和本地安装的安装(您只需下载存档并使其可执行)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM