我在packagist开发一个用户/软件包。在本地安装很好
composer require user/package
创建新项目也很好
composer create-project --prefer-dist user/package new-project
但该计划将在全球部署
composer global require user/package
但是,这会导致以下错误日志。
将当前目录更改为/home/anders/.composer./composer.json
已更新,正在使用包加载作曲家存储库
信息更新依赖项(包括要求开发人员)
无法将要求解析为一组可安装的包。
问题1
-用户/包^v0.0.3的安装请求->用户/包可以满足[v0.0.3]。
-结论:拆除照明/容器V5.5.2
-结论:不要安装照明/容器V5.5.2
-不要安装tightenco/collect v5.4.33;不要安装laravel/frameworkv5.5.2
-不要安装laravel/framework v5.5.2删除tightenco/collect v5.4.33
-照明/容器安装要求(安装在V5.5.2)—>照明/容器满足要求[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 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
最佳答案
如果这是独立的工具,您应该考虑为它构建PHAR。您可以使用kherge/box
来简化构建过程。
phar存档是完全独立的,因此您可以消除所有与全局依赖性冲突的问题。它还可以简化全局和本地安装的安装(您只需要下载存档文件并使其可执行)。