8

背景: デスクトップ マシンで Silex を使用して新しいプロジェクトをセットアップし、必要な依存関係を含む composer.json ファイルをセットアップしました。デスクトップで「composer.phar install」を問題なく実行できました。

私は自分のラップトップに切り替えてプロジェクトにもう少し取り組み、git リポジトリをラップトップにクローンし、「composer.phar インストール」を実行しようとしましたが、次のメッセージを受け取りました。

Your requirements could not be resolved to an installable set of packages.

そのため、代わりに「composer.phar の更新」を行いましたが、うまくいきましたが、composer.lock ファイルを更新したくありませんでした。

他の誰かがこの問題を抱えていますか? そうでない場合、誰かが私が間違っていることを説明してもらえますか?

編集:おそらくこれに戻って質問を更新する必要があると思いました。私はかなり長い間この問題を抱えていませんでした。それが composer のアップデートで修正されたのか (まだこの問題が発生しているかどうかをコメントする必要があるかもしれません)、それとも Composer についてもっと学んだので、私はただ私がこれに遭遇しない方法で物事をやっています。いずれにせよ、composer.json のパッケージ仕様が実際に壊れていない限り、このメッセージを 1 年半近く見たことはありません。

4

1 に答える 1

1

dev-masterうーん、私の推測では、ブランチ ( 、dev-branch-nameまたは) に基づくライブラリを使用してbranch-name@devおり、メンテナが最近プッシュを強制した (たとえば、ブランチをリベースするため) と思われます。

可能な限り、安定したブランチ (タグ (v1.0.0、1.0.* など) にリンクされているバージョンのブランチ) を使用するようにしてください。どこを見ればよいかわからない場合は、次でパッケージを探す必要があります。Packagist、および で開始しないバージョンを使用するdev-か、@dev修飾子を使用して最小安定性を に設定しdevます。

もちろん、やむを得ない場合もあります。ただし、この場合、ライブラリの管理者にいつでもバージョンにタグを付けるよう依頼できます。:)

私の 2 番目の推測は、マシンに異なるライブラリ バージョンがあることです。symfony/icu図書館を例にとってみましょう。マシンにインストールされている Icu のバージョン、およびマシンに intl 拡張機能がインストールされているかどうかによって、これらの問題が発生する可能性があります。composer は composer.lock を古いマシンと一致させようとするため、ロックされたパッケージにはシステムにない依存関係が必要になるため、依存関係は解決されません。これを修正する簡単な方法は、必要な拡張機能をインストールすることです。

于 2014-04-21T02:43:24.310 に答える