「要件をインストール可能なパッケージのセットに解決できませんでした」というエラーを解決するにはどうすればよいですか?


84

実行するcomposer updateと、有線出力を受け取ります。

ここに画像の説明を入力してください

これが私のcomposer.jsonのようです。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.", "keywords": ["framework", "laravel"],
    "license": "MIT",
    "repositories": [{
        "type": "vcs",
        "url": "https://github.com/Zizaco/ardent.git"
    }],
    "require-dev": {
        "phpunit/phpunit": "4.3.*"
    },
    "require": {
        "laravel/framework": "4.2.*", 
        "laravelbook/ardent": "dev-master as 2.4.0", 
        "zizaco/entrust": "dev-master", 
        "sebklaus/profiler": "dev-master", 
        "doctrine/dbal": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations", "app/database/seeds", "app/tests",
            "app/libraries"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

どうすれば修正できますか?


8
ねえ、composer.jsonの画像をcomposer.jsonのテキストコンテンツと交換してください。これにより、問題の再現とそのファイルの編集が可能になります。ありがとう。
Jens A. Koch

2
@ JensA.Koch。できればいいのにと思います。StackOverflowは、私のような低担当者向けに多くのコードを投稿するのを防ぎます。ごめんなさいみんな-私はその制限がないことを望みます。
cyber8200 2015年

3
ああ、そうだね。私のせいで、あなたのポイントを考慮していませんでした。賛成票を投じて、もう少し手に入れましょう...
Jens A. Koch

回答:


40

ソフトウェアの依存関係に互換性のないバージョンの競合があります。

同時に、Laravel 4.2.xバージョンをインストールし、マスターブランチから「zizaco / entrust」をインストールします。そして、そのマスターブランチには少なくともLaravel 5.0が必要です(大まかに言えば)。

問題はブランチへの依存から来ています。パッケージzizaco / entrustがかつてマスターブランチでLaravel4.2を使用していた可能性があり、その日に依存関係をインストールできた可能性があります。しかし、このブランチが互換性のないバージョン要件で更新された瞬間、実行することはできません。composer update更新された依存関係して取得。

常にタグ付きバージョンを使用してください!理想的には、互換性のある更新を可能にする緩和バージョン要件を使用します。これは、チルダ2番号バージョンの要件として表す必要があります。~1.2バージョン1.2.0以降(1.2.99や1.2.100など)と1.3以降をインストールします。特定のパッチリリースが必要な場合:^1.2.10Caret -three-numberバージョンは1.2.10以降、1.3以降もインストールします。

の代わりにこのバージョン要件dev-masterを使用すると、マスターブランチの不安定な状態の代わりにリリースされたバージョンを使用でき、Laravel4.2で引き続き機能する最新バージョンに対処できます。それはzizaco / entrustバージョン1.3.0だと思いますが、バージョン1.2も対象となります。と一緒に行き"zizaco/entrust": "~1.2"ます。


7
この投稿に対する重要な答えは"zizaco/entrust": "~1.2"
Cyber​​8200 2015年

エラーメッセージのどの部分がLaravel 5.0によって必要であると思わせたのかを知ることは役に立ちますzizaco/entrust
quant

まあ、私が正しく覚えていれば、私は言及されたライブラリを見ていて、そのcomposer.jsonの要件を見ました。そして、明確な要件はなかったので、私はおそらく私が見たものを言い換えましたが、それのいくつかのコンポーネント。エラーメッセージでは、illuminate/support ^5.0が必要zizaco/entrustであることがわかります。「Laravel」と「Illuminate」が基本的に同じものであることがわかっている場合、結論は正しいはずです。
Sven


40

私は同じ問題に直面しています。「Lumen」マイクロサービスフレームワークを使用しています。私は最近、2つのパッケージをインストールすることで同じ問題を解決しました:-

  1. sudo apt-get install php7.0-mbstring
  2. sudo apt-get installphp7.0-xmlまたはsudoapt -get install php-xml

これをインストールした後、次のコマンドを実行する必要があります: -composer update

うまくいけば、それは問題を解決するでしょう。私は自分のシステムで作業しています。


本番環境ではコンポーザーアップデートを使用しないでください。問題が発生する可能性があります。composer installは、インストールする正しいコマンドです。私はあなたに反対票を投じましたが、1と2が正しいので、私は賛成票を投じています。
マルセロアギモベル2018

私の状況では、php-gdをインストールすることでうまくいきました。Composerは、冗長(-vvv)フラグがオンになっている場合でも、失敗出力のどこにもこれについて言及していません。
ブラッド

1
私はUbuntu20.04に取り組んでいます。:のみ、このコマンドを実行すると、十分であったsudo apt-get install php-xml
Loïch

8

それらはdev-master自動的に追加されましたか?'任意の適切なバージョン'を使用する場合"*"、または"@dev"開発パッケージを気にしない場合は、不要なバージョン制約としてそれらを避けてください。私の推測では、Entrustは潜在的なトラブルメーカーです。

また、"minimum-stability": "stable"追加の制約を課し、

"minimum-stability": "dev",
"prefer-stable": true

より競合が少ないので、経験則と考えてください。


問題は、不安定な開発バージョンの使用です。盲目的にそれらを許可することは(たとえ安定したものを好むとしても)維持不可能な混乱の鍵です。
2017年

@Sven答えは、dev-master制約である問題に直接対処します。緩いバージョンの制約が良いとは述べていません-それらはおそらく混乱をもたらすでしょう、そしてこれは開発者の良心に基づいています。答えがタグ付けについて意見がないという事実はそれを間違ったものにしません。ちなみに、反対票をありがとうございます。これは、近隣の回答に反対票を投じることは非常に倫理的です。
Estus Flask 2017

私は、この答えが質問されたことに基づいて正しいことに同意します。それは私にとってもうまくいきました。投票しました!
tmarois 2018年

2

'laravel/framework'依存関係のバージョンをから"^8.0"に設定する同じ問題を解決しました"^7.0"

その後、実行はcomposer update --ignore-platform-reqs単に機能しました

composer.json


今日の時点で、最新のLaravelフレームワークバージョンは7.10です。では、依存関係はどのようにして8.0になりましたか?
Digvijay

私はLaravelにかなり慣れていないので、正直にわかりません。これは、composer.jsonファイルをいじったまったく新しいインスタレーションでした
nicolasDevDes

1

composer.json内"barryvdh/laravel-cors": "^0.7.3"require配列の最後に追加します

composer.jsonを保存して実行します composer update

完了です!


2
依存関係をインストールするためにcomposerupdateを使用しないでください。Composerインストールを使用する必要があります。Composerの更新はすべての依存関係を更新し、それは壊滅的である可能性があります。
マルセロアギモベル2018

0

私はLaravel5.8でこの問題に遭遇しました、私がしたことはすることでした composer require、各ライブラリとすべてが正しくインストールされている場所。

そのようです:

それをcomposer.jsonファイルに追加したり、バージョンを指定したりする代わりに:

composer require msurguy/honeypot: dev-master

代わりに、バージョンを指定せずに実行しました。

composer require msurguy/honeypot

お役に立てば幸いです、ありがとう



0

"zizaco/entrust": "*"代わりにを追加することで、同じエラーを解決しました"zizaco/entrust": "~1.2"


-1

原因:

プロジェクトフォルダがrootユーザーによって所有されているため、エラーが発生しています。

解決

rootユーザーではなく、現在サインインしているユーザーに所有権を変更します。rootのみを唯一のユーザーとして使用している場合は、root権限を持つ別のユーザーを作成します。

$ sudo chown -R current_user / my / project / directory /

その後

$ composerインストール


-7

php.iniファイルでカールをアクティブにするだけです

;extension=php_curl.dll

extension=php_curl.dll

その後、composerをインストールします


php_curl.dllをアクティブ化すると、バージョンの不一致(Laravel4.xとLaravel5.x)がどうなるかよくわかりません。これが問題をどのように解決するか説明できますか?
クリスフォーレンス2017

上記の問題が発生していたので、カールを有効にして問題を解決しました。作曲家やlaravelはこのphp拡張機能を使ってパッケージをダウンロードしていると思います。私の場合、laravelパッケージと完全に互換性があるわけではなく、作曲家がパッケージをダウンロードするのは難しいでしょう。
ギデオン2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.