Ubuntu18.04 で apt upgrade が失敗

概要

定期的に apt upgrade を実行しているのですが、今日に限って急に失敗。
とりあえず upgradeができるまでは成功したので手順を書いておきます

ながれ

こんな感じで対応しました

ことのはじまり

apt upgrade に失敗

$ sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 libglvnd-dev : 依存: libglvnd0 (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
                依存: libglvnd-core-dev (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
                依存: libegl1 (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
                依存: libgles2 (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
                依存: libgl1 (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
                依存: libglx0 (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
                依存: libopengl0 (= 1.0.0-2ubuntu2.1) しかし、1.0.0-2ubuntu2.2 はインストールされています
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

言われたとおり apt --fix-broken

$ sudo apt --fix-broken install 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
依存関係を解決しています ... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-headers-4.15.0-30 linux-headers-4.15.0-30-generic linux-image-4.15.0-30-generic
  linux-modules-4.15.0-30-generic linux-modules-extra-4.15.0-30-generic
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libgles1 libglvnd-dev
以下のパッケージが新たにインストールされます:
  libgles1
以下のパッケージはアップグレードされます:
  libglvnd-dev
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 53 個。
14.6 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 66.6 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 276241 個のファイルとディレクトリがインストールされています。)
.../libgles1_1.0.0-2ubuntu2.2_amd64.deb を展開する準備をしています ...
libgles1:amd64 (1.0.0-2ubuntu2.2) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/libgles1_1.0.0-2ubuntu2.2_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1' を上書きしようとしています。これはパッケージ nvidia-340 340.106-0ubuntu3 にも存在します
.../libglvnd-dev_1.0.0-2ubuntu2.2_amd64.deb を展開する準備をしています ...
libglvnd-dev:amd64 (1.0.0-2ubuntu2.2) で (1.0.0-2ubuntu2.1 に) 上書き展開しています ...
dpkg: アーカイブ /var/cache/apt/archives/libglvnd-dev_1.0.0-2ubuntu2.2_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/lib/x86_64-linux-gnu/libGLESv1_CM.so' を上書きしようとしています。これはパッケージ nvidia-340 340.106-0ubuntu3 にも存在します
処理中にエラーが発生しました:
 /var/cache/apt/archives/libgles1_1.0.0-2ubuntu2.2_amd64.deb
 /var/cache/apt/archives/libglvnd-dev_1.0.0-2ubuntu2.2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

パッケージ nvidia-340 340.106-0ubuntu3 にも存在します

これが問題なんだな。

$ sudo apt list nvidia-340
一覧表示... 完了
nvidia-340/bionic,now 340.106-0ubuntu3 amd64 [インストール済み]

よし、このパッケージを消しちゃお。
ほんとに消していいかは不明だけど、だめだったら入れ直せばええやろ!ガハハ!

apt で消せなかったので dpkg で直接処すよ

aptaptitude で最初は消そうと思ったんですがなんかエラーが出てだめでした。
なので dpkg で直接やってしまいます

$ sudo dpkg -l | grep nvidia-340
ii  nvidia-340                                 340.106-0ubuntu3                           amd64        NVIDIA binary driver - version 340.106

~$ sudo dpkg -r nvidia-340
(データベースを読み込んでいます ... 現在 276240 個のファイルとディレクトリがインストールされています。)
nvidia-340 (340.106-0ubuntu3) を削除しています ...
Stopping nvidia-persistenced
nvidia-persistenced: no process found
Done.
Removing all DKMS Modules
Done.

なんかたくさん出てきたけどうまくいったみたい。

fix-broken 再チャレンジ

$ sudo apt --fix-broken install 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
依存関係を解決しています ... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libcuda1-340 libxnvctrl0 linux-headers-4.15.0-30 linux-headers-4.15.0-30-generic
  linux-image-4.15.0-30-generic linux-modules-4.15.0-30-generic
  linux-modules-extra-4.15.0-30-generic nvidia-settings screen-resolution-extra
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libgles1 libglvnd-dev
以下のパッケージが新たにインストールされます:
  libgles1
以下のパッケージはアップグレードされます:
  libglvnd-dev
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 53 個。
14.6 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 66.6 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 275959 個のファイルとディレクトリがインストールされています。)
.../libgles1_1.0.0-2ubuntu2.2_amd64.deb を展開する準備をしています ...
libgles1:amd64 (1.0.0-2ubuntu2.2) を展開しています...
.../libglvnd-dev_1.0.0-2ubuntu2.2_amd64.deb を展開する準備をしています ...
libglvnd-dev:amd64 (1.0.0-2ubuntu2.2) で (1.0.0-2ubuntu2.1 に) 上書き展開しています ...
libgles1:amd64 (1.0.0-2ubuntu2.2) を設定しています ...
libglvnd-dev:amd64 (1.0.0-2ubuntu2.2) を設定しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...

成功!

apt upgrade にも成功!

いちおう 消したパッケージを復旧しておく

$ sudo apt install nvidia-340/bionic
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
'nvidia-340' のバージョン '340.106-0ubuntu3' (Ubuntu:18.04/bionic [amd64]) を選択しました
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-headers-4.15.0-30 linux-headers-4.15.0-30-generic linux-image-4.15.0-30-generic
  linux-modules-4.15.0-30-generic linux-modules-extra-4.15.0-30-generic
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  nvidia-340
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
51.9 MB のアーカイブを取得する必要があります。
この操作後に追加で 274 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/restricted amd64 nvidia-340 amd64 340.106-0ubuntu3 [51.9 MB]
51.9 MB を 31秒 で取得しました (1,651 kB/s)                                                    
以前に未選択のパッケージ nvidia-340 を選択しています。
(データベースを読み込んでいます ... 現在 275967 個のファイルとディレクトリがインストールされています。)
.../nvidia-340_340.106-0ubuntu3_amd64.deb を展開する準備をしています ...
'nvidia-340 による /usr/lib/x86_64-linux-gnu/libGL.so.1 から /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/i386-linux-gnu/libGL.so.1 から /usr/lib/i386-linux-gnu/libGL.so.1.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/x86_64-linux-gnu/libGL.so から /usr/lib/x86_64-linux-gnu/libGL.so.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/i386-linux-gnu/libGL.so から /usr/lib/i386-linux-gnu/libGL.so.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/x86_64-linux-gnu/libEGL.so.1 から /usr/lib/x86_64-linux-gnu/libEGL.so.1.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/i386-linux-gnu/libEGL.so.1 から /usr/lib/i386-linux-gnu/libEGL.so.1.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/x86_64-linux-gnu/libEGL.so から /usr/lib/x86_64-linux-gnu/libEGL.so.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/i386-linux-gnu/libEGL.so から /usr/lib/i386-linux-gnu/libEGL.so.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/x86_64-linux-gnu/libGLESv2.so から /usr/lib/x86_64-linux-gnu/libGLESv2.so.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/i386-linux-gnu/libGLESv2.so から /usr/lib/i386-linux-gnu/libGLESv2.so.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/x86_64-linux-gnu/libGLESv2.so.2 から /usr/lib/x86_64-linux-gnu/libGLESv2.so.2.distrib への退避 (divert)' を追加しています
'nvidia-340 による /usr/lib/i386-linux-gnu/libGLESv2.so.2 から /usr/lib/i386-linux-gnu/libGLESv2.so.2.distrib への退避 (divert)' を追加しています
nvidia-340 (340.106-0ubuntu3) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/nvidia-340_340.106-0ubuntu3_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/lib/x86_64-linux-gnu/libGLESv1_CM.so' を上書きしようとしています。これはパッケージ libglvnd-dev:amd64 1.0.0-2ubuntu2.2 にも存在します
処理中にエラーが発生しました:
 /var/cache/apt/archives/nvidia-340_340.106-0ubuntu3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

だめみたい。
まえっか。ガハハ!

その後

nvidia パッケージで問題が起きてるっていう警告は出ていますが
再起動、問題なく動きました。

しばらく様子見・・・