環境
- WSL 2
- Ubuntu 22.04.2 LTS
- Composer 2.5.7 を
/usr/local/bin/composer
にインストール済み
ふたつの方法
次の2つの方法があります。
- composer self-update
- composer-setup.php
それぞれ説明します。
両方説明しますが、composer self-update
を使えば良いと思います。
composer self-update
composerにはself-updateというサブコマンドがあります。
最新バージョンにアップデートしたいとき
composer self-update
します。
/usr/local/bin/composer
にインストールしているときは
sudo -H composer self-update
すると良さそうです。
実行します。
ledsun@MSI:~►sudo -H composer self-update
[sudo] password for ledsun:
Upgrading to version 2.5.8 (stable channel).
Use composer self-update --rollback to return to version 2.5.7
バージョンを確認してみます。
ledsun@MSI:~►composer --version
Composer version 2.5.8 2023-06-09 17:13:21
2.5.8になりました!
バージョンをもどす
--rollback
オプションでバージョンが戻せるみたいです。
バージョンを戻してみましょう。
ledsun@MSI:~►sudo -H composer self-update --rollback
[sudo] password for ledsun:
Rolling back to version 2023-05-24_15-00-39-2.5.7.
バージョンの見た目が違いますが、末尾をみると2.5.7
とあるので、2.5.7に戻ったようです。
ふたたび2.5.8に上げます。
ledsun@MSI:~►sudo -H composer self-update
[sudo] password for ledsun:
Upgrading to version 2.5.8 (stable channel).
Use composer self-update --rollback to return to version 2.5.7
特定のバージョンをインストールしたいとき
composer self-update
は引数でバージョンを指定出来ます。
ledsun@MSI:~►sudo -H composer self-update 2.5.6
[sudo] password for ledsun:
Upgrading to version 2.5.6 (stable channel).
Use composer self-update --rollback to return to version 2.5.8
バージョンアップのべき等性
余計にバージョンアップしてみます。
ledsun@MSI:~►sudo -H composer self-update
[sudo] password for ledsun:
You are already using the latest available Composer version 2.5.8 (stable channel).
ちゃんと現在のバージョンを認識してスキップしてくれるようです。
自動更新するスクリプトに組んでも大丈夫そうです。
composer-setup.php
composerをインストールするときにつかうcomposer-setup.php
スクリプトでもバージョンアップできます。
comporser-setup.phpのダウンロード
composer-setup.php
は https://getcomposer.org/download/ に載っている手順で取得出来ます。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
の最初の2行です。
やってみましょう。
ledsun@MSI:~►php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ledsun@MSI:~►php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
composer-setup.php
のダウンロードと検証が出来ます。
検証はダウンロードしたcomposer-setup.php
のsha384ハッシュを確認しているようです。
おそらく偽のcomposer-setup.php
をダウンロードしていないか確かめているのでしょう。
最新バージョンにアップデートしたいとき
ledsun@MSI:~►php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 2.5.8) successfully installed to: /home/ledsun/composer.phar
Use it: php composer.phar
バージョンを確認します。
ledsun@MSI:~►composer --version
Composer version 2.5.7 2023-05-24 15:00:39
あれ?変わっていません。
パスが通っているところに移動する必要があるのでした。
ledsun@MSI:~►sudo mv composer.phar /usr/local/bin/composer
[sudo] password for ledsun:
ふたたびバージョンを確認します。
ledsun@MSI:~►composer --version
Composer version 2.5.8 2023-06-09 17:13:21
更新できました。
バージョンを指定したcomposerのインストール
composer-setup.php
は--version
オプションでバージョンを指定します。
やってみましょう。
ledsun@MSI:~►php composer-setup.php --version 2.5.6
All settings correct for using Composer
Downloading...
Composer (version 2.5.6) successfully installed to: /home/ledsun/composer.phar
Use it: php composer.phar
ダウンロードのべき等性
composer-setup.php
を実行すると、ダウンロード済みのファイルの有無にかかわらず、毎回composer.phar
をダウンロードします。
ledsun@MSI:~►php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 2.5.8) successfully installed to: /home/ledsun/composer.phar
ダウンロードなので、それはそうな気がします。