Laravel の composer install で In PackageManifest.php line 122 : Undefined index: name が出て困った話

久しぶりに、Githubからローカルにcloneしてきた、Laravel のソースを、composer install で展開したところ見慣れないエラーに遭遇しました。

解決までの手順があまり見つからなかったので、まとめておきます。

$composer install

...
...

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

In PackageManifest.php line 122:
                         
  Undefined index: name  
                         

原因は?

調べてみたところ、昨年10月にリリースされた、composer v2 を使っている為っぽいです。

vendor/composer/installed.json

v2より必要になった上記ファイル無いの、[ packages ] キーが無いことが原因だとか。

解決方法を2つほど

パッチバージョンを上げる

composer v2 に対応したバージョンがリリースされてますので、

composer update

を行うだけ。環境がなければ新たにインストールも行われます。

Package manifest generated successfully.
65 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

できました。

composer を v1 に下げる

環境によってはバージョンを変えられないケース。

その場合、composer を v1に下げてあげると、

composer self-update --1

いけます。

Package manifest generated successfully.

下げたバージョンを戻す場合は

composerのバージョンを再び戻す場合はこちらです。

composer self-update --rollback