2012-09-08 5 views
8

背景:私のデスクトップマシンでSilexを使用して新しいプロジェクトをセットアップし、composer.jsonファイルを私は欲しい。私は "composer.phar install"を問題なくデスクトップ上で正常に実行しました。Composerは「インストール」を使用しているのに「更新」を使用しないで、インストール可能なパッケージのセットに失敗します

私は、いくつかのより多くのプロジェクトで作業するために私のラップトップに切り替えラップトップにGitのレポをクローニングし、「composer.pharインストール」を実行しようとしましたが、このメッセージを受け取っ:

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

ので、私は代わりに "composer.phar update"を行いましたが、うまくいきましたが、composer.lockファイルを更新したくありませんでした。

他にこの問題がありますか?そうでない場合は、誰かが私が間違っていることを説明できますか?

編集:おそらくこれに戻り、質問を更新する必要があると思いました。私はかなりの時間この問題を抱えていません。私はそれがそれを修正した作曲家の更新であるかどうかは分かりません(人々がまだこの問題を抱えているかどうかを私に知らせるためにコメントしなければならないかもしれません)、あるいは今作曲家についてもっと学んだなら、私はこれに遭遇しない方法で事をする。どちらの方法でも、composer.jsonのパッケージ仕様が実際に壊れていないかぎり、私はこのメッセージを1年半ほどで見たことがありません。

+2

プロジェクトをクローンしたときに、ベンダーフォルダとcomposer.lockファイルが含まれていましたか?通常私がマシンを変更しているときにベンダーのフォルダや.lockファイルがコミットされておらず、最初に行うのはcomposer.pharのインストールです – gunnx

+0

私はリポジトリにベンダーのフォルダを持っていませんでしたが、プロジェクトをチェックアウトして依存関係をインストールするすべての人が同じバージョンになっていることを確認してください。 – Moismyname

+0

これを解決しましたか? –

答えて

1

ハム、私の推測では、あなたがメンテナが最近プッシュを余儀なくされていることになる上、(dev-masterdev-branch-nameまたは[email protected])枝に基づいているライブラリを使用していることだろう(例えばブランチをリベースするため)。

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

もちろん、それは時々避けられない。しかし、この場合は、することができますライブラリーのメンテナーにバージョンにタグを付けるように依頼してください:)

私の2番目の推測は、ご使用のマシンに異なるライブラリーのバージョンがあることです。例えば、symfony/icuライブラリーを取る。マシンにインストールされているIcuのバージョンによって異なります。また、有効にしたことや、マシンにインストールされている拡張機能を使用しているかどうかによっては、これらの問題が発生する可能性があります。 composerはcomposer.lockを古いマシンとマッチさせようとしますが、ロックされたパッケージにはシステムには依存しない依存関係が必要になるため、依存関係は解決されません。 これを簡単に修正するには、必要な拡張機能をインストールするだけです。

+0

私はこの問題が全くないので、かなり長い時間がかかりました。私はComposerの使い方もとても幼いものでした。私はこれがまさにそうだと思っています。正直言ってタグ付けされたバージョンを使用し始めて以来、私はこの問題を抱えていませんでした。私はComposerがロックファイルを使ってこれを管理するはずですが、ワイルドカード仕様(例: "1. *"または "1.1。*")を使用しても、実際のタグ付きバージョンではもっと成功していることがわかりました。返事をいただいた皆様に感謝します。 – Moismyname

関連する問題