CentOS Stream 9 でImageMagickが原因でDNFのアップデートがエラーになったときの対処

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

タイトルのとおりですがImageMagickが原因でDNFのアップデートがエラーになっていたので修復した時の記録です。

環境

実施日2023-01-31
サーバさくらのVPS 2G
OSCentOS Stream 9
cat /etc/redhat-release
CentOS Stream release 9

経緯

DNFのアップデートでエラーが出ていることに気が付きました。

そこで手動で実行してみると次のような表示がでてきます。

dnf update --enablerepo=epel,remi
Extra Packages for Enterprise Linux 9 - x86_64                                                                                                                                                                 8.0 kB/s | 5.0 kB     00:00
Extra Packages for Enterprise Linux 9 - x86_64                                                                                                                                                                 7.2 MB/s |  13 MB     00:01
Remi's RPM repository for Enterprise Linux 9 - x86_64                                                                                                                                                          510  B/s | 833  B     00:01
Remi's RPM repository for Enterprise Linux 9 - x86_64                                                                                                                                                          486 kB/s | 2.1 MB     00:04
メタデータの期限切れの最終確認: 0:00:02 時間前の 2023年01月31日 16時49分24秒 に実施しました。
エラー:
 問題 1: パッケージの最良アップデート候補をインストールできません ImageMagick-devel-6.9.12.40-1.el9.x86_64
  - jasper-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - OpenEXR-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - ghostscript-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - jbigkit-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - openjpeg2-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
 問題 2: インストール済パッケージの問題 ImageMagick-devel-6.9.12.40-1.el9.x86_64
  - パッケージ ImageMagick-devel-6.9.12.40-1.el9.x86_64 には ImageMagick(x86-64) = 6.9.12.40-1.el9 が必要ですが、どのプロバイダーからもインストールできません
  - パッケージ ImageMagick-devel-6.9.12.70-1.el9.x86_64 には ImageMagick(x86-64) = 6.9.12.70-1.el9 が必要ですが、どのプロバイダーからもインストールできません
  - ImageMagick-1:6.9.12.73-1.el9.remi.x86_64 と ImageMagick-6.9.12.40-1.el9.x86_64 どちらもインストールできません
  - ImageMagick-1:6.9.12.73-1.el9.remi.x86_64 と ImageMagick-6.9.12.70-1.el9.x86_64 どちらもインストールできません
  - パッケージの最良アップデート候補をインストールできません ImageMagick-6.9.12.40-1.el9.x86_64
  - jasper-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.72-1.el9.remi.x86_64 に必要です
  - OpenEXR-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.72-1.el9.remi.x86_64 に必要です
  - ghostscript-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.72-1.el9.remi.x86_64 に必要です
  - jbigkit-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.72-1.el9.remi.x86_64 に必要です
  - openjpeg2-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.72-1.el9.remi.x86_64 に必要です
  - jasper-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - OpenEXR-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - ghostscript-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - jbigkit-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
  - openjpeg2-devel(x86-64) が提供されません ImageMagick-devel-1:6.9.12.73-1.el9.remi.x86_64 に必要です
(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください または、'--skip-broken' を追加して、インストール不可のパッケージをスキップしてください または、'--nobest' を追加して、最適候補のパッケージのみを 使用しないでください)

「ImageMagick」という文字がいっぱい目に入ってきます。
見るからに「ImageMagick」に原因がありそうですね。

ImageMagickを使う目的

本サーバの目的がWEBサーバでPHPから画像を扱うためにインストールしています。

解決した方法

いろいろ調査とか試行錯誤したところは省略します。
結果的には「削除してインストールしなおし」としました。

ちなみにPHPとImageMagicのインストールは下記に記しています。
CentOS Stream 9 にPHP8.1をDNFでインストール

それでは手順を記していきます。

ImageMagick を削除する

とりあえずはDNFアップデートをしたいので、エラーの原因であるImageMagicを削除します。

dnf remove ImageMagick

DNFをアップデートする

epel と remi をつけてアップデートします。

dnf update --enablerepo=epel,remi

ImageMagick をインストールする

CentOS Stream 9 の場合は epel を使います。

dnf --enablerepo=epel install ImageMagick ImageMagick-devel

PHPとImageMagicを紐づける

最初の手順でImageMagicを削除したことでPHPから外れていますので、 pecl install しなおします。

pecl install imagick

httpd を再起動

httpdを再起動して反映させます。

systemctl restart httpd.service

確認

phpinfo(); のページを用意しておくと分かりやすいです。