アップデートでエラーが発生
久しぶりにアップデート作業を行うと以下のエラーが発生。
$ sudo yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 8.3 kB 00:00:00
* base: ftp.riken.jp
* epel: ftp.riken.jp
* extras: ftp.riken.jp
* nux-dextop: mirror.li.nux.ro
* remi-safe: ftp.riken.jp
* updates: ftp.riken.jp
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
mariadb | 3.4 kB 00:00:00
nux-dextop | 2.9 kB 00:00:00
remi-safe | 3.0 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/3): epel/x86_64/updateinfo | 1.1 MB 00:00:00
(2/3): remi-safe/primary_db | 2.2 MB 00:00:00
(3/3): epel/x86_64/primary_db | 7.0 MB 00:00:01
Resolving Dependencies
--> Running transaction check
---> Package ImageMagick6-libs.x86_64 0:6.9.12.55-1.el7.remi will be updated
---> Package ImageMagick6-libs.x86_64 0:6.9.12.56-1.el7.remi will be an update
---> Package gd-last.x86_64 0:2.3.3-2.el7.remi will be obsoleted
--> Processing Dependency: gd-last(x86-64) >= 2.1.1 for package: php-gd-7.4.23-1.el7.remi.x86_64
--> Processing Dependency: libgd.so.3()(64bit) for package: php-gd-7.4.23-1.el7.remi.x86_64
---> Package gd3php.x86_64 0:2.3.3-7.el7.remi will be obsoleting
--> Finished Dependency Resolution
Error: Package: php-gd-7.4.23-1.el7.remi.x86_64 (@remi-php74)
Requires: libgd.so.3()(64bit)
Removing: gd-last-2.3.3-2.el7.remi.x86_64 (@remi-safe)
libgd.so.3()(64bit)
Obsoleted By: gd3php-2.3.3-7.el7.remi.x86_64 (remi-safe)
~libgd.so.103()(64bit)
Error: Package: php-gd-7.4.23-1.el7.remi.x86_64 (@remi-php74)
Requires: gd-last(x86-64) >= 2.1.1
Removing: gd-last-2.3.3-2.el7.remi.x86_64 (@remi-safe)
gd-last(x86-64) = 2.3.3-2.el7.remi
Obsoleted By: gd3php-2.3.3-7.el7.remi.x86_64 (remi-safe)
Not found
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
『Obsoleted By: gd3php-2.3.3-7.el7.remi.x86_64』のメッセージが気になります。
gd3php が廃止された?
何か情報が古くなってるのでしょうか。
対処方法
最初に
--skip-broken オプションを付けて yum update を再実行してみました。
結果は変わらず同エラー。
$ sudo yum update --bkip-broken
次に
エラーに出てた gd3php がどのリポジトリにあるかを確認してみます。
コマンドの出力結果から remi にあるようです。
$ yum list --enablerepo=remi,epel gd3php
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* epel: ftp.iij.ad.jp
* extras: ftp-srv2.kddilabs.jp
* nux-dextop: mirror.li.nux.ro
* remi: ftp.riken.jp
* remi-safe: ftp.riken.jp
* updates: ftp-srv2.kddilabs.jp
Installed Packages
gd3php.x86_64 2.3.3-7.el7.remi @remi
となると remi リポジトリの設定をまずは確認です。
リポジトリファイルを grep すると enabled が 0 となっておりデフォルト無効でした。
つまり普通にオプション無しで yum を使うと remi は対象外になります。
$ grep enabled /etc/yum.repos.d/remi.repo
enabled=0
yum のオプションに --enablerepo を指定し remi リポジトリを有効化、その後アップデート実行。
しかしエラーは改善されず。
$ sudo yum update --enablerepo=remi
remi リポジトリは複数あるため、リポジトリ名 remi の後ろにワイルドカード付けて再実行。
結果はようやくアップデート成功!
$ sudo yum update --enablerepo=remi*
結論
必要に応じてアップデート時にも --enablerepo オプションを付け、外部リポジトリの有効化をしましょう。