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
少なくとも、バージョンアップは、成功しておる。