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が適切に構成されていない問題は解決していないので、恐らくまた発生する気がする。
その時はまた追記したいと思う。
Webエンジニアをやっています
UX/UIデザインからプログラミング、DB設計、SEO、インフラ構築など幅広く対応してます
PHP/PHPUnit/Laravel/Vue/Nuxt/Docker/Terraform
ご連絡はTwitterのDMまで。