Laravel, composer install で PackageManifest でエラーが発生するので解決する

少し古いLaravelのバージョンを使っていて `composer install` をしたところ `php artisan package:discover` でエラーが発生するようになった。 調べていくとどうやらcomposerで2.0以降のバージョンで `vendor/composer/installed.json` のフォーマットが変更されていてそれによるエラーが発生しているのがわかった。割と多くの人がつまづきそうなのでメモとして残しておく。


## エラーとスタックトレース

```
php artisan package:discover

production.ERROR: Undefined index: name {"exception":"[object] (ErrorException(code: 0): Undefined index: name at /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php:131)
[stacktrace]
#0 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(131): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'Undefined index...', '/var/www/php/ve...', 131, Array)
#1 /var/www/php/vendor/laravel/framework/src/Illuminate/Support/Collection.php(685): Illuminate\\Foundation\\PackageManifest->Illuminate\\Foundation\\{closure}(Array, 'packages')
#2 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(132): Illuminate\\Support\\Collection->mapWithKeys(Object(Closure))
#3 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(106): Illuminate\\Foundation\\PackageManifest->build()
#4 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(89): Illuminate\\Foundation\\PackageManifest->getManifest()
#5 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(78): Illuminate\\Foundation\\PackageManifest->config('aliases')
#6 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php(26): Illuminate\\Foundation\\PackageManifest->aliases()
#7 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(219): Illuminate\\Foundation\\Bootstrap\\RegisterFacades->bootstrap(Object(Illuminate\\Foundation\\Application))
#8 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(320): Illuminate\\Foundation\\Application->bootstrapWith(Array)
#9 /var/www/php/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#10 /var/www/php/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#11 {main}
"} 
```

## 原因
- composerをlatestでインストールする指定にしていた
- 最近になってlatestが1系から2.0.0に変更された
- composer 2.0.0からinstalled.jsonのフォーマットが変わった
- Laravelで対応するIsuueが出ていてリリースされているがバージョンが古かったためエラーが発生した

## 対応Isuue
[[5.8] Backport support for Composer 2.x #32328](https://github.com/laravel/framework/pull/32328)
[[6.x] Add support for the new composer installed.json format #32310](https://github.com/laravel/framework/pull/32310/files#diff-f23f27e11552f50c073957465c42205556b39fd668e919e1288323c0f3f77bdd)

## 修正済みのLaravelのバージョン

- [v8.0.0](https://github.com/laravel/framework/releases/tag/v8.0.0)
- [v7.6.0](https://github.com/laravel/framework/releases/tag/v7.6.0)
- [v6.18.7](https://github.com/laravel/framework/releases/tag/v6.18.7)
- [v5.8.38](https://github.com/laravel/framework/releases/tag/v5.8.38)
- [v5.7.29](https://github.com/laravel/framework/releases/tag/v5.7.29)
- [v5.6.40](https://github.com/laravel/framework/releases/tag/v5.6.40)
- [v5.5.49](https://github.com/laravel/framework/releases/tag/v5.5.49)

## 解決方法
上記のバージョン以降にアップデートすることでエラーは解決します。または composer 1.x 系を利用してください。