【问题标题】:Composer does not find my forked repository declared on a custom package's "repository" settings使用自定义包无法解决 Composer 要求
【发布时间】:2021-06-20 02:08:53
【问题描述】:

我目前正在开发自己的作曲家包,但他们尝试执行 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].

【问题讨论】:

    标签: php dependencies composer-php


    【解决方案1】:

    repositories 键只能在根 composer.json 上读取。

    docs 中所述:

    存储库不是递归解析的。您只能将它们添加到您的主 composer.json。依赖的 composer.jsons 的仓库声明被忽略。

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

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

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

    【讨论】:

    • 很好的解释。即使给定的路径不存在,是否有任何方法可以添加存储库?就像可选一样,因为我在尝试添加不存在的文件时遇到以下错误:“为路径(packages/pinnokkio/something)存储库提供的url 不存在”
    • 我不知道。我不认为这是一种很有意义的设置,IMO。
    • 很高兴答案帮助了@Pinnokkio。尽管您接受了它,但您认为它不值得投票的任何理由?
    • 嗯,我认为没有比这更好的答案了,因为你的答案对我来说很清楚,也很有意义。
    • 好的,谢谢。只是问,因为你没有投票似乎很奇怪,只是接受了答案。
    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 2016-03-22
    • 2020-04-13
    • 2015-09-09
    • 2017-10-31
    • 2016-09-05
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多