Ubuntuでapt installが失敗する原因を調べる

Ubuntuでexpect パッケージを追加しようとしたら以下の様なエラーが発生したので原因を調べていく。

$ sudo apt install expect
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 expect : 依存: libtcl8.6 (>= 8.6.0) しかし、インストールされようとしていません
          依存: tcl-expect しかし、インストールされようとしていません
          推奨: tcl8.6
 libc6-dbg : 依存: libc6 (= 2.27-3ubuntu1.2) しかし、2.27-3ubuntu1 はインストールされようとしています
 libc6-dev : 依存: libc6 (= 2.27-3ubuntu1.2) しかし、2.27-3ubuntu1 はインストールされようとしています
 libc6-i386 : 依存: libc6 (= 2.27-3ubuntu1.2) しかし、2.27-3ubuntu1 はインストールされようとしています
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

うーん。これだけだとよくわからん。
apt --fix-broken installを実行してみてください」との事なので素直に実行してみる。

$ sudo apt --fix-broken install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
依存関係を解決しています ... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libudev1:i386
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libc6 libc6:i386
提案パッケージ:
  glibc-doc glibc-doc:i386 locales:i386
以下のパッケージはアップグレードされます:
  libc6 libc6:i386
アップグレード: 2 個、新規インストール: 0 個、削除: 0 個、保留: 140 個。
5 個のパッケージが完全にインストールまたは削除されていません。
5,377 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 4,096 B のディスク容量が消費されます。
続行しますか? [Y/n] y
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
(データベースを読み込んでいます ... 現在 265521 個のファイルとディレクトリがインストールされています。)
.../libc6_2.27-3ubuntu1.2_i386.deb を展開する準備をしています ...
libc6:amd64 (2.27-3ubuntu1) を設定削除しています ...
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
dpkg: アーカイブ /var/cache/apt/archives/libc6_2.27-3ubuntu1.2_i386.deb の処理中にエラーが発生しました (--unpack):
 new libc6:i386 package pre-installation script subprocess returned error exit status 1
.../libc6_2.27-3ubuntu1.2_amd64.deb を展開する準備をしています ...
libc6:i386 (2.27-3ubuntu1) を設定削除しています ...
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
dpkg: アーカイブ /var/cache/apt/archives/libc6_2.27-3ubuntu1.2_amd64.deb の処理中にエラーが発生しました (--unpack):
 new libc6:amd64 package pre-installation script subprocess returned error exit status 1
処理中にエラーが発生しました:
 /var/cache/apt/archives/libc6_2.27-3ubuntu1.2_i386.deb
 /var/cache/apt/archives/libc6_2.27-3ubuntu1.2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

以下の様な記述があり、どうやら/var/cache/debconf/config.datがロックされてアクセス出来なくてエラーになっている模様。

debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable

lsofで何のプロセスがファイルをロックしているのかを調べる。
frontendというプロセスにロックされている事がわかる。

$ sudo lsof /var/cache/debconf/config.dat
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
frontend 6911 root    4uW  REG  259,2    46289 21500785 /var/cache/debconf/config.dat

frontend について調べるとDKMSが適切に構成されていない場合に残ってしまうプロセス(?)らしい。
https://unix.stackexchange.com/questions/554025/linux-mint-frontend-process-what-is-it
確かにVirtualBoxを導入する際にそんなキーワードが出てきた記憶がある

killしても問題なさそうなプロセスなのでkillしてみる

sudo kill [frontendのPID]

再度、パッケージのインストールを試みた所、問題なく完了した。

sudo apt --fix-broken install

当初の目的であったexpectのインストールも出来た。

とりあえずやりたい事はできた。一旦良しとするが、DKMSが適切に構成されていない問題は解決していないので、恐らくまた発生する気がする。
その時はまた追記したいと思う。

コメントする