yumでアップデートをしようとしたら、何度も「Another app is currently holding the yum lock; waiting for it to exit…」と表示されていつになってもyumが実行できない。
そんなときの対策方法です。
状況
yumのcheck-updateをかけたところ、以下の内容が表示されてyumが実行されません。
# yum check-update
読み込んだプラグイン:fastestmirror
ロックファイル /var/run/yum.pid が存在します: PID 10040 として別に実行されています。
Another app is currently holding the yum lock; waiting for it to exit...
他のアプリケーション: yum
メモリー: 95 M RSS (461 MB VSZ)
開始 : Fri Feb 8 00:14:31 2019 - 08:59 秒経過
状態 : スリープ中、PID: 10040
Another app is currently holding the yum lock; waiting for it to exit...
他のアプリケーション: yum
メモリー: 95 M RSS (461 MB VSZ)
開始 : Fri Feb 8 00:14:31 2019 - 09:01 秒経過
状態 : スリープ中、PID: 10040
Another app is currently holding the yum lock; waiting for it to exit...
他のアプリケーション: yum
メモリー: 95 M RSS (461 MB VSZ)
開始 : Fri Feb 8 00:14:31 2019 - 09:03 秒経過
状態 : スリープ中、PID: 10040
Another app is currently holding the yum lock; waiting for it to exit...
他のアプリケーション: yum
メモリー: 95 M RSS (461 MB VSZ)
開始 : Fri Feb 8 00:14:31 2019 - 09:05 秒経過
状態 : スリープ中、PID: 10040
^C
Exiting on user cancel.
9分以上もスリープしているのはどう見てもおかしいのでCtrl+Cで終了しました。
原因
yumが実行中の際は、/var/run/yum.pidというロックファイルを作成して排他処理をかける仕組みになっています。
前回yumを実行した際にyumが正常に終了しなかった場合や、バックグラウンドでyumが既に実行中の際にこの現象が起こります。
対策
まず、「状態 : スリープ中、PID: 10040」となっているので、スリープしているプロセス(PID: 10040)をkillコマンドで強制終了させます。
# kill -9 10040
次に、排他制御のロックファイル/var/run/yum.pidを削除します。
# rm -f /var/run/yum.pid
念のためにyum clean allでyumをクリーンナップしましょう。
# yum clean all
読み込んだプラグイン:fastestmirror, langpacks
リポジトリーを清掃しています: base centos-sclo-rh centos-sclo-sclo extras
...: mariadb-main mariadb-maxscale mariadb-tools nginx remi-safe updates
...: virtualmin virtualmin-universal
Cleaning up list of fastest mirrors
Other repos take up 179 M of disk space (use --verbose for details)
これで対策は終了です。
もう一度yum check-updateを実行してみます。
# yum check-update
読み込んだプラグイン:fastestmirror, langpacks
Determining fastest mirrors
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* remi-safe: ftp.riken.jp
* updates: ftp.iij.ad.jp
base | 3.6 kB 00:00:00
centos-sclo-rh | 3.0 kB 00:00:00
centos-sclo-sclo | 2.9 kB 00:00:00
extras | 3.4 kB 00:00:00
mariadb-main | 2.9 kB 00:00:00
mariadb-maxscale | 2.4 kB 00:00:00
mariadb-tools | 2.9 kB 00:00:00
nginx | 2.9 kB 00:00:00
remi-safe | 3.0 kB 00:00:00
updates | 3.4 kB 00:00:00
virtualmin | 3.6 kB 00:00:00
virtualmin-universal | 3.6 kB 00:00:00
(1/15): extras/7/x86_64/primary_db | 156 kB 00:00:00
(2/15): base/7/x86_64/group_gz | 166 kB 00:00:00
(3/15): base/7/x86_64/primary_db | 6.0 MB 00:00:00
(4/15): mariadb-maxscale/7/x86_64/primary_db | 6.7 kB 00:00:01
(5/15): mariadb-tools/7/x86_64/primary_db | 11 kB 00:00:01
(6/15): remi-safe/primary_db | 1.4 MB 00:00:00
(7/15): updates/7/x86_64/primary_db | 2.4 MB 00:00:00
(8/15): mariadb-main/7/x86_64/primary_db | 50 kB 00:00:01
(9/15): virtualmin/7/x86_64/group_gz | 1.2 kB 00:00:00
(10/15): centos-sclo-sclo/x86_64/primary_db | 264 kB 00:00:02
(11/15): virtualmin-universal/group_gz | 468 B 00:00:00
(12/15): virtualmin/7/x86_64/primary_db | 27 kB 00:00:00
(13/15): virtualmin-universal/primary_db | 18 kB 00:00:00
(14/15): nginx/x86_64/primary_db | 42 kB 00:00:01
(15/15): centos-sclo-rh/x86_64/primary_db | 3.7 MB 00:00:03
正常にyum(yum check-update)が実行されました。
以上で解決です。

