yum/dnf 途中で止まった場合

linux

状況説明

yumでvmware-toolsをインストールしていると、インストールが途中で止まってしまった。5個目のインストールで止まってしまった。

---------------------------------------------------------------------------------------------------
合計                                                                    704 kB/s | 1.1 MB     00:01
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : xmlsec1-1.2.20-4.el6.x86_64                                          1/7
  インストールしています  : xmlsec1-openssl-1.2.20-4.el6.x86_64                                  2/7
  インストールしています  : libmspack-0.6-0.1.alpha.el6.x86_64                                   3/7
  インストールしています  : fuse-libs-2.8.3-5.el6.x86_64                                         4/7
  インストールしています  : libdnet-1.12-6.el6.x86_64                                            5/7

実際にプロセスはどうなっているのかというと

$ ps -ef | grep yum
root   10245 13782  3 13:25 pts/0    00:00:06 /usr/bin/python /usr/bin/yum --enablerepo=epel install open-vm-tools
root   10342 10311  0 13:29 pts/1    00:00:00 grep yum

と、こんな感じで残ってるけど、進まない。。。history結果を見てみる。

$ yum history
読み込んだプラグイン:fastestmirror, security
ロックファイル /var/run/yum.pid が存在します: PID 10245 として別に実行されています。
別のアプリケーションが現在 yum のロックを持っています。終了するまで待っています...
 他のアプリケーション: yum
   メモリー: 109 M RSS (408 MB VSZ)
    開始   : Thu Oct 27 13:25:57 2022 - 10:00 秒経過
    状態   : スリープ中、PID: 10245

実行しているyumがあるので確認不可。動く気配がないので、強制的に停止

 :
  インストールしています  : libdnet-1.12-6.el6.x86_64                                            5/7

^CError in PREIN scriptlet in rpm package fuse-2.8.3-5.el6.x86_64
error: %pre(fuse-2.8.3-5.el6.x86_64) scriptlet failed, signal 2
error:   install: %pre scriptlet failed (2), skipping fuse-2.8.3-5.el6
$ 

エラーとなって処理終了。7個あったうちどこまでインストールが完了しているのか確認。

$ rpm -qa | grep xmlsec
xmlsec1-1.2.20-4.el6.x86_64
xmlsec1-openssl-1.2.20-4.el6.x86_64
$ rpm -qa | grep libmspack
libmspack-0.6-0.1.alpha.el6.x86_64
$ rpm -qa | grep fuse
fuse-libs-2.8.3-5.el6.x86_64
$ rpm -qa | grep libdnet
libdnet-1.12-6.el6.x86_64

5個目まではインストールできていることを確認。6,7個目はインストールされていなかった。

一応historyも見てみる

$ yum history info 96
読み込んだプラグイン:fastestmirror, security
トランザクション ID : 96
開始時間            : Thu Oct 27 13:26:21 2022
開始 rpmdb          : 835:222f6998324743c3bb87c175bac4476c53f02c67
ユーザー            : user <user>
終了コード          : ** 中断しました **
コマンドライン      : --enablerepo=epel install open-vm-tools
トランザクションの実行:
    インストール rpm-4.8.0-38.el6_6.x86_64                     @updates
    インストール yum-3.2.29-60.el6.centos.noarch               @base
    インストール yum-plugin-fastestmirror-1.1.30-30.el6.noarch @base
切り替えたパッケージ:
Loading mirror speeds from cached hostfile
 ** 依存インストール fuse-2.8.3-5.el6.x86_64             @?base
    依存インストール fuse-libs-2.8.3-5.el6.x86_64        installed
    依存インストール libdnet-1.12-6.el6.x86_64           installed
    依存インストール libmspack-0.6-0.1.alpha.el6.x86_64  installed
 ** インストール open-vm-tools-10.1.5-6.el6.x86_64   ?
    依存インストール xmlsec1-1.2.20-4.el6.x86_64         installed
    依存インストール xmlsec1-openssl-1.2.20-4.el6.x86_64 installed
スクリプトの出力:
   1 error: %pre(fuse-2.8.3-5.el6.x86_64) scriptlet failed, signal 2
   2 error:   install: %pre scriptlet failed (2), skipping fuse-2.8.3-5.el6

エラー情報がきちんと残っている

再インストール

とりあえず、続きから実施されるか試してみる

$  yum --enablerepo=epel install open-vm-tools
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
依存性の解決をしています
終了していない残作業があります。それらを終了するために、まず yum-complete-transaction の実行を検討すべきかもしれませ ん。
--> トランザクションの確認を実行しています。
---> Package open-vm-tools.x86_64 0:10.1.5-6.el6 will be インストール
--> 依存性の処理をしています: fuse のパッケージ: open-vm-tools-10.1.5-6.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package fuse.x86_64 0:2.8.3-5.el6 will be インストール
--> 依存性解決を終了しました。
================================================================================================
 パッケージ                     アーキテクチャ          バージョン                    リポジトリー           容量
================================================================================================
インストールしています:
 open-vm-tools                  x86_64                  10.1.5-6.el6                  epel                  628 k
依存性関連でのインストールをします。:
 fuse                           x86_64                  2.8.3-5.el6                   base                   77 k

トランザクションの要約
=================================================================================================
インストール         2 パッケージ

合計容量: 705 k
インストール済み容量: 2.1 M
これでいいですか? [y/N]

インストールはできそうだけど、残作業があるよって怒られるので、cleanupする。

$ /usr/sbin/yum-complete-transaction
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
There are 1 outstanding transactions to complete. Finishing the most recent one
The remaining transaction had 1 elements left to run
Nothing in the unfinished transaction to cleanup.
Cleaning up completed transaction file

その後、インストールは問題無く完了できる。

ネットワークが突然切断されたりした場合も上記のような状況に陥ることがあるので、そのような場合も同様の手順でリカバリが可能(リカバリというほどのものでも無いが。。。)

ちなみにコマンドが無い場合は下記をインストールすれば実行が可能になる

$ yum install yum-utils

コメント