yumでアップデートをしようとしたら、何度も「Another app is currently holding the yum lock; waiting for it to exit…」と表示されていつになってもyumが実行できない。
そんなときの対策方法です。
状況
yumのcheck-updateをかけたところ、以下の内容が表示されてyumが実行されません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 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コマンドで強制終了させます。
1 |
# kill -9 10040 |
次に、排他制御のロックファイル/var/run/yum.pidを削除します。
1 |
# rm -f /var/run/yum.pid |
念のためにyum clean allでyumをクリーンナップしましょう。
1 2 3 4 5 6 7 |
# 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を実行してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# 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)が実行されました。
以上で解決です。