Composer 找不到我在自定义包的 "repository" 设置中声明的分叉存储库

Composer does not find my forked repository declared on a custom package's "repository" settings

我目前正在开发自己的 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 作为依赖。

composer.json pinnokkio/bar:

{
    "name": "pinnokkio/bar",
    ...
    "repositories": {
        "foo": {
            "type": "path",
            "url": "../foo",
            "options": {
                "symlink": true
            }
        }
    },
    "require": {
        "pinnokkio/foo": "@dev"
    },
    ...
}

composer.json pinnokkio/foo:

{
    "name": "pinnokkio/foo",
    "require": {
        "php": "^8.0"
    },
    ...
}

总而言之,在我的主要 composer.json 中,我将需要一个需要 pinnokkio/foo[= 的包41=] 到 运行。进一步即将推出的软件包都需要 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 密钥仅在根 composer.json 上读取。

docs 中所述:

Repositories are not resolved recursively. You can only add them to your main composer.json. Repository declarations of dependencies' composer.jsons are ignored.

递归解析 repositories 会出现问题。如果多个包声明了包含相同包的不同存储库,composer 如何知道使用哪个?

此外,这将为依赖项打开大门,通过为已知包提供备用存储库来劫持您的系统,并且您最终会在系统中安装不受信任的包。

如果您从自定义存储库安装多个包,则需要在根配置文件中声明所有自定义存储库。