PHP - PHP 7.2 → 7.4 - PHP アップグレード

 クラウディア
1. 概要
2. アップグレード
3. 後始末

1. 概要

 パッケージをアップグレードします。

2. アップグレード


portupgrade -f php72 -o lang/php74
pkg set -o lang/php72:lang/php74

portupgrade -f php72-extensions -o lang/php74-extensions
pkg set -o lang/php72-extensions:lang/php74-extensions

portupgrade -f mod_php72 -o www/mod_php74
pkg set -o www/mod_php72:www/mod_php74
 いずれも2行目は

Change origin from カテゴリ/パッケージ旧 to カテゴリ/パッケージ新 for パッケージ旧? [y/N]:
 と効いてきます。  y Enter で答えます。  一発目の

portupgrade -f php72 -o lang/php74
 のところで

--->  Installing the new version via the port
===>  Deinstalling for php74
===>   php74 not installed, skipping
===>  Installing for php74-7.4.14
===>   Registering installation for php74-7.4.14
Installing php74-7.4.14...
pkg-static: php74-7.4.14 conflicts with php72-hash-7.2.34 (installs files into the same place).  Problematic file: /usr/local/include/php/ext/hash/php_hash.h
*** Error code 70

Stop.
make[2]: stopped in /usr/ports/lang/php74
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/lang/php74
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/php74
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20210118-2883-ytpv6w env UPGRADE_TOOL=portupgrade UPGRADE_PORT=php72-7.2.34 UPGRADE_PORT_VER=7.2.34 make -DFORCE_PKG_REGISTER reinstall
--->  Restoring the old version
Installing php72-7.2.34...
Extracting php72-7.2.34: 100%
** Fix the installation problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! lang/php74 (php72-7.2.34)     (install error)
 てなエラーになります。  これは、予測通り。  後で始末をつけるので、そのまま先へ進めます。  二発目の

portupgrade -f php72-extensions -o lang/php74-extensions
 は、もはや

[Reading data from pkg(8) ... - 257 packages found - done]
** Port marked as IGNORE: lang/php74-extensions:
        cannot be installed: doesn't work with lang/php72 port (doesn't support PHP 7.2 7.3)
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        - lang/php74-extensions (marked as IGNORE)
 ですわ。  これもそのまま進めます。  三発目だけは、エラーなしに終わります。

3. 後始末

 前項でエラーになるものは、後始末します。

$ pkg remove php72
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 31 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        php72: 7.2.34
        php72-composer: 1.10.15

・・・	略	・・・

        php72-xmlwriter: 7.2.34
        php72-zlib: 7.2.34

Number of packages to be removed: 31

The operation will free 39 MiB.

Proceed with deinstalling packages? [y/N]:
 y Enter

cd /usr/ports/lang/php74
make
make install

cd /usr/ports/lang/php74-extensions
make
 ここで

/usr/ports/devel/php74-intl/work/php-7.4.14/ext/intl/collator/collator_sort.c:543:26: error: use of undeclared identifier 'false'
        collator_sort_internal( false, INTERNAL_FUNCTION_PARAM_PASSTHRU );
                                ^
2 errors generated.
*** [collator/collator_sort.lo] Error code 1

make[3]: stopped in /usr/ports/devel/php74-intl/work/php-7.4.14/ext/intl
1 error

make[3]: stopped in /usr/ports/devel/php74-intl/work/php-7.4.14/ext/intl
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/devel/php74-intl
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/lang/php74-extensions
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/php74-extensions
 ってエラーになっちゃいました。

/usr/ports/devel/php74-intl
make MAKE_JOBS_UNSAFE=yes
 しても同様。  仕方ないのでここは

pkg install php74-intl
 でインストール。  再度

cd /usr/ports/lang/php74-extensions
make
 しても同じだったので

portupgrade -Rr php74-intl
cd /usr/ports/devel//php74-intl
make deinstall
 してから

cd /usr/ports/lang/php74-extensions
make
make install
 これで、最低限のものは、インストールもしくは、アップグレードできているはず。  あとは、動作確認しながら、インストールしたりアップグレードしたりするしかない。
ハイスピードプラン