WSL(Ubuntu 16.04)にてapt upgradeで失敗する

はじめに

約10年間くらいメインマシンをMacにしていましたが、今年からWindows 10のPCをメインに使用しています。

これまでUNIXのツールを利用したいがためにMacを使ってきました。しかし互換性の関係からExcel、WordのOfficeソフトMac用ではなく、Parallels上のWindows用のOfficeをわざわざ使用し、Macオンリーな状況ではなかったわけです。最近、WSL(Windows Subsystem for  Linux)がすこぶる快適に使えるようになったので、もうWindowsがメインでも良いかなと思うようになったわけです。

MSstore

WSLもMicrosoft Storeを見ると色々種類がありますが、比較的慣れたUbuntuを指定します。Store上にて「Ubuntu」として出ているのはバージョン18.04です。今入れるのであれば 18.04 にすべきと思いますが、古い某システムの保守上、Rails 3.2 の開発環境やMySQLでのデータベース環境を構築するために、一つ前の 16.04 のバージョンを選びました。18.04 は、MySQLではなくMariaDBで文字エンコーディングが utf8mb4 だったり、OpenSSL が1.1系で、Ruby 2.2系がビルドできなかったりで、色々と面倒だったので。。。

…と前置きはここまでにして。

apt upgradeで問題が発生

「apt upgrade」を動かして放ったらかしにしていたところ、Windowsがサスペンドか何かの状態になって、apt upgrade が途中で止まってしまい、復帰後再スタートさせてみましたが、mysql-server のupdateのところで、どうしてもエラーになってしまう状況に。(次のような状況)

Ubuntu 16.04 mysql update fails – Shaun Freeman

具体的には、こんな感じ。

E: dpkg は中断されました。問題を修正するには 'dpkg --configure -a' を手動で実行する必要があります。
root@bullseye:~# dpkg --configure -a
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another  process: Resource temporarily unavailable
dpkg: パッケージ mysql-server-5.7 の処理中にエラーが発生しました  (--configure):
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
dpkg: 依存関係の問題により mysql-server の設定ができません:
mysql-server は以下に依存 (depends) します: mysql-server-5.7 ...しかし:
  パッケージ mysql-server-5.7 はまだ設定されていません。
dpkg: パッケージ mysql-server の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

mysql-server-5.7 の更新(upgrade)に失敗するとでます。またmysqld.sockの場所も何か変

$ ps ax | grep mysqld
3590 pts/1    Sl     0:00 mysqld --user=mysql  --init-file=/var/lib/mysql-
files/tmp.XHXmDk2aK4  --socket=/tmp/tmp.4KYwXzZyHg/mysqld.sock  --pid-
file=/tmp/tmp.4KYwXzZyHg/mysqld.pid

色々やってみましたが解決せず、参考になったのはこのサイト(ありがとうございます)

「dpkgやapt-get関連でエラーが出た時の対処法 – Qiita」

 

問題のあるパッケージの確認

$ sudo dpkg --audit

問題あるパッケージのinfoファイル(.postinst、postrm、prerm)の削除

$ sudo rm /var/lib/dpkg/info/mysql-server-5.7.postinst
$ sudo rm /var/lib/dpkg/info/mysql-server-5.7.postrm
$ sudo rm /var/lib/dpkg/info/mysql-server-5.7.prerm

展開済みだが未設定のパッケージを再構成するため –configure をつけて mysql-server-5.7 を再構成する。

$ sudo dpkg --configure mysql-server-5.7
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...

後は、エラーでの指摘の通り、 –configure -a してから upgrade します。

$ sudo  dpkg --configure -a
$ sudo apt upgrade

一応これで回復するのですが、ふとしたときに apt upgrade するとまた起きてしまいます。何故(・∀・)?

ということで、結局 Ubuntu 18.04 を使うことになり、Rails 3.2 の環境はDockerによって実現することにするのですが、その話はまた今度。。。

WSL(Ubuntu 16.04)にてapt upgradeで失敗する」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中