PHP - Composer(パッケージ管理) - バージョンアップ

クラウディア 
1. 概要
2. 調査
3. インストール

1. 概要

 「Laravel」のあるプロジェクトに、「PHPMailer」を組み込もうとして・・・。

$ php -d memory_limit=-1 /usr/local/bin/composer.phar require phpmailer/phpmailer
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\Downloader\TransportException]
  The "https://packagist.org/p/provider-latest%242407f55ced5d5fbeb2c72c08618a3dca979bb492ecc62ebd56015ddbc0fe1ff
  1.json" file could not be downloaded (HTTP/1.1 404 Not Found)

require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...
 なんだかよくわからないが、エラーになりました。  どうも、リポジトリに存在しないと言っているような・・・。  前半部分は、「Composer 1」から「Composer 2」へ移行しているぜ、と言っているようです。  「PHP | Composer のバージョンを 2.x にバージョンアップする | メモ」あたりでは。  「リポジトリーを取得する際に、v2 系を使えと言われるようになった。」と書いておる。  通常の場合のやり方は、このサイトに書いてある通りでいいんだろうなぁ。

2. 調査

 一応、参考サイトのやり方で現在のバージョンを見てみる。

$ composer --version
Composer version 1.10.22 2021-04-27 13:10:45
 なるほどね、「Composer 1」ですわな。  でもね、わたしの場合、「FreeBSD」上で、「ports」を使ってインストールしておりますでな。  なんで、「ports」でアップグレードされないんだろう?と確認してみると。

$ pkg search composer
php73-composer-1.10.22         Dependency Manager for PHP
php73-composer2-2.1.3          Dependency Manager for PHP, version 2.x
php74-composer-1.10.22         Dependency Manager for PHP
php74-composer2-2.1.3          Dependency Manager for PHP, version 2.x
php80-composer-1.10.22         Dependency Manager for PHP
php80-composer2-2.1.3          Dependency Manager for PHP, version 2.x
subtitlecomposer-0.7.0_10      Subtitle editor
 あぁ、なるほどね。  「ports」では、「composer」と「composer2」と別物になっておるのだな。

3. インストール

 競合しちゃったりするのかしら?  とりあえず、「Composer 1」をアンインストールするかどうかは保留しておいて、「Compser 2」がインストールできるか、やってみます。

$ whereis php80-composer2
php80-composer2:
$ whereis php-composer2
php-composer2: /usr/ports/devel/php-composer2
 うむ。「php80-composer2」とか書いておるが、「PHP」のバージョンに依存するのであろうな。  現在(2021年8月17日)「PHP 8.0」を使用しておるので、「php80-composer2」がインストールされるはず。

$ cd /usr/ports/devel/php-composer2
$ make config
===> No options to configure
 オプションはないのであるな。

$ cd /usr/ports/devel/php-composer2
$ make

===>  php80-composer2-2.1.5 conflicts with installed package(s):
      php80-composer-1.10.22

      They install files into the same place.
      You may want to stop build with Ctrl + C.
===>  License MIT accepted by the user
===>   php80-composer2-2.1.5 depends on file: /usr/local/sbin/pkg - found

・・・	略	・・・

===>   Generating temporary packing list
install  -m 555 /usr/ports/devel/php-composer2/work-php80/php80-composer2-2.1.5/composer.phar /usr/ports/devel/php-composer2/work-php80/stage/usr/local/bin/
/bin/ln -s composer.phar /usr/ports/devel/php-composer2/work-php80/stage/usr/local/bin/composer
====> Compressing man pages (compress-man)
$ make install
===>  Installing for php80-composer2-2.1.5
===>  Checking if php80-composer2 is already installed
===>   Registering installation for php80-composer2-2.1.5
Installing php80-composer2-2.1.5...
pkg-static: php80-composer2-2.1.5 conflicts with php80-composer-1.10.22 (installs files into the same place).  Problematic file: /usr/local/bin/composer
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/php-composer2
 うむ、「make」は、通るが、「make install」は、やはり「conflict」が発生するのであるな。  わかった、仕方ない。

$ cd /usr/ports/devel/php-composer
$ make deinstall clean
===>  Deinstalling for php80-composer
===>   Deinstalling php80-composer-1.10.22
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        php80-composer: 1.10.22

Number of packages to be removed: 1

The operation will free 2 MiB.
[1/1] Deinstalling php80-composer-1.10.22...
[1/1] Deleting files for php80-composer-1.10.22: 100%
===>  Cleaning for php80-composer-1.10.22
===>  Cleaning for php73-composer-1.10.22
===>  Cleaning for php74-composer-1.10.22
$ cd /usr/ports/devel/php-composer2
$ make install
===>  Installing for php80-composer2-2.1.5
===>  Checking if php80-composer2 is already installed
===>   Registering installation for php80-composer2-2.1.5
Installing php80-composer2-2.1.5...
 とりあえず、無事インストールできたようです。  バージョンを確認してみます。  これは、「root」ユーザでやると怒られちゃうので、ログインユーザで。

$ composer --version
Composer version 2.1.5 2021-07-23 10:35:47
 少なくとも、バージョンアップは、成功しておる。
ハイスピードプラン