こんにちはー!むちょこです。
composer 自体のバージョンアップについて書いていきます。
バージョンアップのタイミング
composer を利用しようと思ったら、こんな警告が出てきたことはありませんか?
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
ざっくり意訳すると「君の使ってる composer のバージョンはもう廃止だから、アップグレードしたほうがいいよ!」って教えてくれています。親切!
徐々に非対応のパッケージも増えてくるため、これが出てきたら早めにバージョンアップを検討します。
バージョンアップ方法
コマンドを1つ実行するだけでバージョンアップできます。
バージョンアップのコマンド
$ composer self-update
実行例
$ composer --version
Composer version 1.8.3 2019-01-30 08:31:33
$ composer self-update
Updating to version 2.5.4 (stable channel).
Downloading (100%)
Use composer self-update --rollback to return to version 1.8.3
$ composer --version
Composer version 2.5.4 2023-02-15 13:10:06
トラブルシューティング
パーミッションエラー
次のようなパーミッションエラーが発生することがあります。
[ErrorException]
rename(/home/{your-name}/.cache/composer/composer-temp.phar,/usr/local/bin/composer): Permission denied
/usr/local/bin に対する権限が足りていない可能性がありますので、一時的に権限を付与してみてください。
以下の例では、 /usr/local/bin ディレクトリの権限設定を確認してから 777 に変更し、バージョンアップ完了後に元の権限設定に戻しています。
実行例
$ ls -la /usr/local
drwxr-xr-x. 2 root root 4096 Aug 26 2020 bin
$ sudo chmod 0777 /usr/local/bin/
$ composer self-update
Updating to version 2.5.4 (stable channel).
Downloading (100%)
Use composer self-update --rollback to return to version 1.8.3
$ composer --version
Composer version 2.5.4 2023-02-15 13:10:06
$ sudo chmod 0755 /usr/local/bin/
$ ls -la /usr/local
drwxr-xr-x. 2 root root 4096 Feb 17 21:34 bin
他にもバージョンアップできない事例があれば @muchoco_dev 宛に教えていただけたら嬉しいです。分かる範囲で追記してみます:)