私は新しいプロジェクトとコンポーザーを使用した Symfony 2 の依存関係に悩まされています。
最初のいくつかの状況では、composer を使用して symfony/framework-standard-edition v2.1.5 をインストールします。これにより、これらの要件を持ち、最小安定性ノードを持たないコンポーザ ファイルが生成されます。
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*@dev",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"kriswallsmith/assetic": "1.1.*@dev"
},
これは問題なく動作し、想定どおりにすべての最新の安定バージョンがインストールされます。
次に、バンドルを追加します -> https://packagist.org/packages/kunstmaan/admin-bundle
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*@dev",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"kriswallsmith/assetic": "1.1.*@dev",
"kunstmaan/admin-bundle": "dev-master"
},
このバンドルは、「dev-master」( https://packagist.org/packages/doctrine/doctrine-fixtures-bundle )の「doctrine/doctrine-fixtures-bundle」に依存します。
そして、そのバンドルは * を含む doctrine/data-fixtures に依存します ( https://packagist.org/packages/doctrine/data-fixtures )
プロジェクトで composer update を実行すると、doctrine/data-fixtures の依存関係を満たすものは何もないことがわかります。名前のタイプミスか、最小安定性がデフォルトで安定しているため、利用可能な「安定した」バージョンがありません。
doctrine-fixtures-bundle を「dev」安定性にインストールする必要があります。これは、dev-master を配置すると、この依存関係が自動的に「dev」安定性に置かれるためです。しかし、これはこの dep の dep に対しては何もしません。それが私の最小安定性であるため、彼らは安定してインストールしたいと考え続けています。
この時点で、doctrine/data-fixtures: dev-master または @dev をプロジェクトの composer.json に追加することで、これを修正できます。
ただし、これは 1 つの例 (knpmenubundle、fosuserbundle など) にすぎないため、自分のコンポーザー ファイルにインストールされない deps のすべての deps を手動で追加する必要があります。
別の解決策は、私のプロジェクトの最小限の安定性を dev にドロップすることですが、その時点で、Symfony2 のような安定したものを含むすべての deps は、タグ付けされたリリースではなく、開発バージョンをインストールします。