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
これで、最低限のものは、インストールもしくは、アップグレードできているはず。
あとは、動作確認しながら、インストールしたりアップグレードしたりするしかない。