php - 使用自定义包无法解决 Composer 要求
问题描述
我目前正在开发自己的作曲家包,但他们未能尝试执行composer update
.
这是我的根composer.json:
{
...
"repositories": {
"bar": {
"type": "path",
"url": "packages/pinnokkio/bar",
"options": {
"symlink": true
}
}
},
"require": {
"php": "^8.0",
...
"pinnokkio/bar": "@dev"
},
...
}
这意味着,应该安装包pinnokkio/bar 。并且包pinnokkio/bar需要pinnokkio/foo作为依赖项。
pinnokkio/bar的composer.json:
{
"name": "pinnokkio/bar",
...
"repositories": {
"foo": {
"type": "path",
"url": "../foo",
"options": {
"symlink": true
}
}
},
"require": {
"pinnokkio/foo": "@dev"
},
...
}
pinnokkio/foo的composer.json:
{
"name": "pinnokkio/foo",
"require": {
"php": "^8.0"
},
...
}
总而言之,在我的主要composer.json中,我将需要一个需要pinnokkio/foo才能运行的包。更多即将推出的软件包都需要pinnokkio/foo才能运行,但不幸的是,我在尝试执行时遇到此错误composer update
。所有软件包位于<root>/packages/
:
Problem 1
- pinnokkio/bar[dev-feature-modules, dev-master] require pinnokkio/foo@dev -> could not be found in any version, there may be a typo in the package nam
e.
- Root composer.json requires pinnokkio/bar@dev -> satisfiable by pinnokkio/bar[dev-feature-modules, dev-master].
解决方案
repositories
密钥只能在 root 上读取composer.json
。
如文档中所述:
存储库不是递归解析的。您只能将它们添加到您的主 composer.json。依赖项 composer.jsons 的存储库声明被忽略。
递归解决repositories
会有问题。如果多个包声明了包含相同包的不同存储库,作曲家如何知道使用哪个?
此外,通过为已知软件包提供备用存储库,这将为依赖劫持系统打开大门,并且您最终会在系统中安装不受信任的软件包。
如果您从自定义存储库安装多个包,则需要在根配置文件中声明所有自定义存储库。
推荐阅读
- bootstrap-4 - 为什么我的引导和媒体查询没有响应
- java - 如何从文件中读取java中的所有数据并形成数组列表
- c - 如何让断言打印到 UART?STM32 新库纳米
- node.js - Node.js Github API 连接 ECONNREFUSED 错误获取用户存储库
- azure - 从 Azure 用户定义的输出器读取模板
- java - 从 int 和 double 到 char 的隐式类型转换
- java - 学习 Java 中的 Switch 语句
- arrays - 如何将 ActiveCell 地址存储到 Excel 中的动态 VBA 数组中?
- android - 在 Android 上支持 arm64 架构的 Mono?
- python - Python & Classes - 我可以在超类中使用将在子类中创建的方法吗?