dnf updateしたらphp-pgsqlのエラー

dnf updateしたらエラーになったので調べた時の覚書。

環境: CentOS Stream 8, PHP 7.4.30

# dnf update

Last metadata expiration check: 8:04:20 ago on Fri 21 Oct 2022 07:49:06 AM JST.
Error:
 Problem: package php-pgsql-7.4.30-1.module_el8.7.0+1190+d11b935a.x86_64 requires libpq.so.5(RHPG_9.6)(64bit), but none of the providers can be installed
  - cannot install both libpq5-15.0-42PGDG.rhel8.x86_64 and libpq5-14.5-42PGDG.rhel8.x86_64
  - package libpq5-15.0-42PGDG.rhel8.x86_64 obsoletes libpq provided by libpq-13.2-1.el8.x86_64
  - package libpq5-15.0-42PGDG.rhel8.x86_64 obsoletes libpq provided by libpq-13.3-1.el8_4.x86_64
  - package libpq5-15.0-42PGDG.rhel8.x86_64 obsoletes libpq provided by libpq-13.5-1.el8.x86_64
  - cannot install the best update candidate for package php-pgsql-7.4.30-1.module_el8.7.0+1190+d11b935a.x86_64
  - cannot install the best update candidate for package libpq5-14.5-42PGDG.rhel8.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

libpq5-15.0をインストールしようとしているけどphp-pgsqlがlibpq5-14.5を使っているから出来ないというエラー(だと思う)

仮想環境なのでスナップショットをとる。

php-pgsqlをとりあえずアンインストール
# dnf remove php-pgsql

アップデート
# dnf update

libpq5-15.0にアップデートされた。
これでphp-pgsqlをインストールしてみる。
# dnf install php-pgsql

libpq5-14.5がインストールされた。
# dnf update

最初のエラーと同じ。
元に戻す
# dnf remove php-pgsql
# dnf update

PHP8にしたら解決できるのかと思ってやってみた。
# dnf module reset php
# dnf module enable php:8.0
# dnf --allowerasing distro-sync

確認
# php --version

PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib64/php/modules/imagick.so (/usr/lib64/php/modules/imagick.so: undefined symbol: instanceof_function), /usr/lib64/php/modules/imagick.so.so (/usr/lib64/php/modules/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: mecab: Unable to initialize module
Module compiled with module API=20190902
PHP    compiled with module API=20200930
These options need to match
 in Unknown on line 0
PHP 8.0.20 (cli) (built: Jun  8 2022 00:33:06) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.20, Copyright (c), by Zend Technologies

imagickとmecabでエラーになっている。
これは後で再ビルドするので、とりあえず削除する。
# cd /etc/php.d/
# rm -f imagick.ini mecab.ini

確認
# php --version

PHP 8.0.20 (cli) (built: Jun  8 2022 00:33:06) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.20, Copyright (c), by Zend Technologies

本題のphp-pgsqlをインストールする。
# dnf install php-pgsql

libpq5-14.5をインストールしようとしてる…。

今のところlibpq5-15.0にしたらダメだということが分かった。

スナップショットで元に戻した。

PostgreSQLのYUMリポジトリを停止する。
# cd /etc/yum.repos.d/
# less pgdg-redhat-all.repo

[pgdg-common]
enabled=0

確認
# dnf update

しばらくはこれで運用する。


【関連記事】