遭遇したエラー

1$ composer require laravel/ui

上記コマンドで laravel/ui を追加しようとしたところ、エラーになりました。

 1Using version ^2.0 for laravel/ui
 2./composer.json has been updated
 3Loading composer repositories with package information
 4Updating dependencies (including require-dev)
 5Your requirements could not be resolved to an installable set of packages.
 6
 7  Problem 1
 8    - Conclusion: remove laravel/framework v6.18.1
 9    - Conclusion: don't install laravel/framework v6.18.1
10    - laravel/ui 2.x-dev requires illuminate/filesystem ^7.0 -> satisfiable by illuminate/filesystem[7.x-dev, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1].
11    - laravel/ui v2.0.0 requires illuminate/filesystem ^7.0 -> satisfiable by illuminate/filesystem[7.x-dev, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1].
12    - laravel/ui v2.0.1 requires illuminate/filesystem ^7.0 -> satisfiable by illuminate/filesystem[7.x-dev, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1].
13    - don't install illuminate/filesystem 7.x-dev|don't install laravel/framework v6.18.1
14    - don't install illuminate/filesystem v7.0.0|don't install laravel/framework v6.18.1
15    - don't install illuminate/filesystem v7.0.1|don't install laravel/framework v6.18.1
16    - don't install illuminate/filesystem v7.0.2|don't install laravel/framework v6.18.1
17    - don't install illuminate/filesystem v7.0.3|don't install laravel/framework v6.18.1
18    - don't install illuminate/filesystem v7.0.4|don't install laravel/framework v6.18.1
19    - don't install illuminate/filesystem v7.0.5|don't install laravel/framework v6.18.1
20    - don't install illuminate/filesystem v7.0.6|don't install laravel/framework v6.18.1
21    - don't install illuminate/filesystem v7.0.7|don't install laravel/framework v6.18.1
22    - don't install illuminate/filesystem v7.0.8|don't install laravel/framework v6.18.1
23    - don't install illuminate/filesystem v7.1.0|don't install laravel/framework v6.18.1
24    - don't install illuminate/filesystem v7.1.1|don't install laravel/framework v6.18.1
25    - Installation request for laravel/framework (locked at v6.18.1, required as ^6.2) -> satisfiable by laravel/framework[v6.18.1].
26    - Installation request for laravel/ui ^2.0 -> satisfiable by laravel/ui[2.x-dev, v2.0.0, v2.0.1].
27
28
29Installation failed, reverting ./composer.json to its original content.

どんなエラー

追加を試みた laravel/ui は、 Laravel 7 系が必要です。

しかし、私のプロジェクトはちょっと古くて v6.18.1 だった、ということでした。

エラーメッセージを読み解くと、

1- Conclusion: remove laravel/framework v6.18.1
2- Conclusion: don't install laravel/framework v6.18.1

結論、 Laravel 6 系はダメだよ、消しちゃいなよ、

1laravel/ui 2.x-dev requires illuminate/filesystem ^7.0 -> satisfiable by illuminate/filesystem[7.x-dev, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1].

illuminate は雑に言えば Laravel で、
laravel/ui 2.x-dev は、 Laravel 7 系が必要けれども、君の環境はそれを満たしてないよ、

ということでした。

大量のエラーメッセージが出てしんどい感じがしますが、言っていることはシンプルですね。

対処方法

Packagist
laravel/ui
https://packagist.org/packages/laravel/ui

Packagist あたりを調べてみると、laravel/ui に対応した Laravel は次であることがわかります。

2.x 7 系
1.x 5.8、6 系

上記より、Laravel 6 系のプロジェクトには laravel/ui 1.x をインストールすれば良いですね。

具体的には次のコマンドでインストールできることを確認しました。

1$ composer require laravel/ui:1.2.0

そのまま Laravel 6 系を使い続けるのか ? というのもありますし、アップグレードするかーというのは検討したほうがいいですけどね。

なんでこんなことになるのか

これは、プロジェクト生成時の最新と、パッケージ追加時の最新に差が出でしまい、加えて 互換性がなかったために起きたタイミング問題 でした。

たしかに、プロジェクトを生成したときは、Laravel 6 系が最新でした。

その後少し時間をおいていたのですが、その間、Laravel 7 系が新しく出てきたようです。

Composer は、バージョンを指定しない場合に最新をインストールしようとしますので、そのあたりも良くなかったですね。

ということで、バージョンを意識して、バージョンが合ったものを入れる、がベターですね。