1. ホーム
  2. laravel

[解決済み】「お客様の要件はインストール可能なパッケージのセットに解決できませんでした」エラーの解決方法は?

2022-01-28 07:16:05

質問内容

を実行すると 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"
}

どうすれば直るの?

どのように解決するのですか?

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

同時に、Laravel 4.2.x の任意のバージョンと、その master ブランチから "zizaco/entrust" をインストールしたいと思います。そして、そのmasterブランチは、少なくともLaravel 5.0を必要とします(大雑把ですが)。

問題はブランチの依存関係から来るものです。かつてzizaco/entrustというパッケージは、そのmasterブランチでLaravel 4.2を使っていて、その日のうちに依存関係をインストールできた可能性があります。しかし、このブランチが互換性のないバージョン要件に更新された瞬間に、あなたは二度と、Laravel 4.2を実行できなくなります。 composer update で、更新された依存関係を取得します。

常にタグ付けされたバージョンを使用しましょう 理想的には、互換性のあるアップデートを可能にするために、緩和されたバージョン要件を使用することです。これは、ティルデ・ツー・ナンバーのバージョン要件として表現されるべきです。 ~1.2 は、バージョン 1.2.0 以上 (1.2.99 や 1.2.100 など) と、1.3 以上をインストールします。特定のパッチリリースが必要な場合。キャレット3数字バージョン ^1.2.10 は、1.2.10以降、1.3以降をインストールします。

の代わりにこのバージョン要件を使用します。 dev-master を使えば、masterブランチの不安定な状態ではなく、リリースされたバージョンを使うことができ、Laravel4.2でまだ動作する最新バージョンに対応することができます。zizaco/entrustのバージョン1.3.0が該当すると思いますが、バージョン1.2でも問題ないでしょう。次のようにします。 "zizaco/entrust": "~1.2" .