web-dev-qa-db-ja.com

Composer-要求されたパッケージは存在しますが、制約により拒否されます

Composerからインストールを実行すると、次のエラーが発生します。

λcomposer install xdebugを有効にしてcomposerを実行しています。これは、ランタイムのパフォーマンスに大きな影響を及ぼします。 https://getcomposer.org/xdebug パッケージ情報を含むcomposerリポジトリーのロード依存関係の更新(require-devを含む)を参照してくださいインストール可能なパッケージのセットに要件を解決できませんでした。

エラー:

問題1-要求されたパッケージantoineb1/smoney_bundle 1.0はantoineb1/smoney_bundle [dev-master]として存在しますが、これらは制約によって拒否されます。

Mycomposer.json

{
    "name": "project",
    "license": "proprietary",
    "type": "project",
    "minimum-stability": "dev",
    "prefer-stable" : true,
    "autoload": {
        "psr-4": {
            "": "src/"
        }
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": [
        {
            "url": "bitbucket url",
            "type": "vcs"
        }
    ],
    "require": {
        "php": ">=5.5.9",
        "antoineb1/smoney_bundle": "1.0"
    }
}
43

バージョン制約"1.0"は、 内部的に解釈"1.0.0.0-stable"バージョンです。

ただし、利用可能な唯一のバージョンは次のとおりです。

antoineb1/smoney_bundle [dev-master]。

そのため、適切なバージョンに応じて、指定されたバージョンを次のいずれかに変更できます。

  • 1.0.*(composerは>=1.0.0.0-dev <1.1.0.0-devとして表示されます-そのパッケージには明らかにバージョンがないため、おそらく動作しません)
  • dev-master
  • dev-master#<hash>
  • @dev
  • 等.

composer schema を参照してください。

31
BVengerov

以下の@Guillaumeによるコメント この回答 は、より大きなプレゼンテーションに値します。

composerは、vを含む git release を必要としているようです。

したがって、v1.1.0ではなく1.1.0である必要があります。

私は約90分を見ました

mikeill/my_repo 3.3.10 requires composer/installers 1.0.*@dev -> satisfiable by composer/installers[1.0.x-dev, v1.0.0, ...] but these conflict with your requirements or minimum-stability.

そして、このスレッドを最終的に発見する前に、多くのgithubの問題とSOの投稿が1、2件あります。

8
MikeiLL

私はしばらくの間、この質問についてかなりの量、時間、正気を失いました。私の場合の問題は、パッケージ自体のcomposer.jsonでバージョンを「dev-master」として指定していることでした。

参照: https://getcomposer.org/doc/04-schema.md#version

記載箇所:

注:PackagistはVCSリポジトリを使用するため、上記の説明はPackagistにも当てはまります。 自分でバージョンを指定すると、人的エラーのために、ある時点で問題が発生する可能性が高くなります

(エンファシス鉱山)

このバージョン要素を削除し、完全に機能しました:)

3
OllieLowson

私はこの質問に出くわし、別の問題を見つけました。これは完全に忘れていましたが、誰かが確認する必要があると思うかもしれません。

私の場合、非常に古いgitプロジェクトがあり、しばらく前にフォークされていたので、それらをマージする必要がありました(フォークされたプロジェクトには多くの変更はありませんでしたが)。そこで、古いプロジェクトのスプリットポイントを特定し、それを作曲家のバージョンとしてタグ付けしたので、新しいプロジェクトの代わりにそれを使用できます。

私が忘れていたのは、もともと作曲家を使用していなかったことです。そのため、タグポイントのファイル構造にはcomposer.jsonがありませんでした。私の新しいタグが、「あなたの制約によって拒否された」ものの「存在する」リストに表示されなかった理由を理解できませんでした。最終的に、古いタグにブランチを作成し、プロジェクトのcomposer.jsonを作成したコミットをチェリーピックして、タグを付け直す必要があることに気付きました。

彼らがこのエラーメッセージを念頭に置いて狩りに来る​​ならば、これが誰かの記憶を揺さぶることを願っています。

2
sibaz