composer-php - silex/silex 1.0.*@dev -> 未找到匹配的包

标签 composer-php silex

如果我创建一个空文件夹并将composer.json放在那里:

{
    "require": {
        "silex/silex": "1.0.*@dev"
    }
}

然后运行composer install - 它工作正常,microframework silex 及其所有要求都将安装到供应商文件夹中。好的。

现在有更复杂的例子,我无法理解为什么它不起作用。 我有一个项目(称为“FB”),它依赖于我自己的“某种框架”(称为“light/light4”)。 FB项目的composer.json:

{
    "repositories":[
        {
            "type":"hg",
            "url":"http://bitbucket.org/pqr/light4"
        }
    ],
    "require":{
        "light/light4":"dev-default"
    }
}

如您所见,这取决于我在 bitbucket 上托管的框架 light/light4。 然后是light/light4composer.json:

{
    "name":"light/light4",
    "version":"1.0.0",
    "require":{
        "php":">=5.4.0",
        "silex/silex": "1.0.*@dev",
        "twig/twig":">=1.8,<2.0-dev",
        "monolog/monolog":">=1.0.0",
        "symfony/validator":"2.1.*",
        "symfony/console":"2.1.*"
    },
    "autoload":{
        "psr-0":{
            "Light":"src/"
        },
        "files":[
            "src/functions/body.php", "src/functions/db.php", "src/functions/file.php", "src/functions/misc.php"
        ]
    }
}

light/light4 取决于 silex/silex 和其他一些东西。

由于我从未提及"minmun-stability":"dev" - 假设默认情况下将安装所有软件包以获得稳定版本。除了 light/light4 要求的 silex/silex 为 "silex/silex": "1.0.*@dev"

不幸的是,当我在根项目 (FB) 上运行 composer -v install 时,出现以下错误:

Loading composer repositories with package information
Reading composer.json of light/light4 (default)
Importing branch default (dev-default)
Installing dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - light/light4 dev-default requires silex/silex 1.0.*@dev -> no matching package found.
    - light/light4 dev-default requires silex/silex 1.0.*@dev -> no matching package found.
    - Installation request for light/light4 dev-default -> satisfiable by light/light4 dev-default.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

silex/silex 1.0.*@dev -> 找不到匹配的包 - 为什么???它适用于简单的空项目,但不适用于需求链:(

来自composer-dev irc的人建议将"silex/silex": "1.0.*@dev"放入FB项目的通用composer.json中。我尝试过 - 现在它可以工作了:所有软件包都安装在稳定版本中,并且按照我的意愿在开发版本中安装了唯一的 silex/silex 。现在我完全困惑了。

问题仍然存在 - 为什么它在一般的composer.json中工作而在嵌套(必需)项目light/light4中不起作用?我该如何理解问题的根源,或者这只是 Composer 的一个错误?

最佳答案

作为docs说:“require 和 require-dev 另外支持稳定性标志(仅限 root)”

这些标志只能从根包中读取(请参阅 definition of root-only ),因为这样可以让您的项目完全控制包的稳定性。显然,当您的某些依赖项依赖于不稳定的东西时,这是一个问题,但随着越来越多的软件包具有 Composer 可用的稳定版本,这种情况应该会变得更好。

关于composer-php - silex/silex 1.0.*@dev -> 未找到匹配的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325355/

相关文章:

php - Composer 无法在 symfony 4 上要求 symfony/symfony

php - Route.php 找不到我创建的 Controller 类

php - Doctrine 返回不同数组中的连接查询

php - 如何使用(或不使用)composer 安装 MarkLogic PHP 库?

php - BrowserKit 组件不可用

php - 未找到 RoboFile Composer 自动加载特征

php - 更新时 Composer 被杀

php - 如何在 Silex Framework 中使用 YAML 配置文件

php - 如何调试 Silex Framework 中的 php fatal error

php - PHP 应用程序中正确的 RESTful SOA 方法?