Ubuntu18.04 LTSから20.04 LTSにdo-release-upgradeした時の問題について

# はじめに

お盆休み中にVMware Workstation上で利用しているUbuntu 18.04LTSを20.04LTSにアップグレードしてみました。

これまで同様の作業を実施してきて、特に問題なく更新できていましたが、今回は問題に遭遇したのでメモを残しておきます。

# 参考資料

* https://ubuntu.com/blog/how-to-upgrade-from-ubuntu-18-04-lts-to-20-04-lts-today

# 留意事項

Ubuntu 20.04.1がリリースされていますが、参考資料のドキュメントにあるように最初の".1"リリースがでるまでの間は古いバージョンからのアップグレードは推奨されていません。

また現状では、まだ、'-d'オプションを要求されます。
問題があった場合に自分で対応できる自信がなければ、もうしばらくは、18.04の利用を続けた方が良さそうです。

アップグレード手順は、GUIとCLIのどちらを利用するか選択でき、```sudo update-manager -c -d```か```sudo do-release-upgrade -d```のいずれかで更新できます。

# エラーメッセージ

CLIで更新しようと、do-release-upgradeを実行したところ次のような問題が発生しました。

```text:
$ sudo do-release-upgrade -d
...

Processing triggers for libc-bin (2.31-0ubuntu9) ...
Errors were encountered while processing:
 libuim-data
 uim-skk
 uim-gtk3
 uim-qt5
 uim-gtk2.0-immodule:amd64
 uim-gtk3-immodule:amd64
 libglew-dev:amd64
 uim-gtk2.0
 libqt5dbus5:amd64
 uim-qt5-immodule:amd64
 uim-data

Upgrade complete 

The upgrade has completed but there were errors during the upgrade 
process. 

To continue please press [ENTER]
```

# 対応手順と作業ログ

手動でapt (or apt-get)コマンドを使用して、パッケージを更新していきます。
一回では対応できませんでした。

```bash
$ sudo apt --fix-broken install
$ sudo apt dist-upgrade -y
Unpacking libattr1:amd64 (1:2.4.48-5) over (1:2.4.47-2build1) ...
Errors were encountered while processing:
 /tmp/apt-dpkg-install-XYwMmI/070-texlive-base_2019.20200218-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
$ sudo apt --fix-broken install
$ sudo apt dist-upgrade -y
```

おおまかには、uim関連とtexlive関連で処理が止まってはいますが、他のシステムでもuim-skkは利用して無事にアップグレードできているので、根本的な原因については分かっていません。

dist-upgradeが無事に終ってから、システムを再起動し、無事に20.04.1 LTSにアップグレードできました。

## 手順2 update-managerによる更新

VMwareを利用しているので、先ほどの作業直前の18.04のシステムを復元し、update-managerを利用してみます。

```bash
$ sudo update-manager -c -d
```

ダイアログが表示されるので、Upgrade...を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78296/d26e3a32-a72b-50b6-b5ba-9d66c2ef1301.png)


このまま画面の表示に従って作業を進めていきます。
問題が発生した時の画面は次ような状態でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78296/f8e2b32d-4ce6-0cb3-e7c7-4c284d6c3cf3.png)

この後も通常の設定ファイル置き換えの有無を問うダイアログやエラーメッセージは続き、update-managerを起動した端末上に様々なメッセージが出力されていきます。fontconfig関連のエラーが連続して出力された後で、最終的には、upgrade処理が同じような箇所でエラーになっています。

```text:console出力
Broken libc6-dev:amd64 Depends on libcrypt-dev:amd64 < none | 1:4.4.10-10ubuntu4 @un uH >
  Considering libcrypt-dev:amd64 1 as a solution to libc6-dev:amd64 52
  MarkKeep libc6-dev:amd64 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU Ib > FU=0
  Re-Instated manpages-dev:amd64
  Re-Instated libcrypt-dev:amd64
  Re-Instated libc6-dev:amd64
Done
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/libuim-data.0.crash'
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/uim.0.crash'
Fontconfig warning: "/etc/fonts/fonts.conf", line 5: unknown element "its:rules"
Fontconfig warning: "/etc/fonts/fonts.conf", line 6: unknown element "its:translateRule"
Fontconfig error: "/etc/fonts/fonts.conf", line 6: invalid attribute 'translate'
Fontconfig error: "/etc/fonts/fonts.conf", line 6: invalid attribute 'selector'
...
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78296/0f619f75-8bf7-af9e-e96e-61a6a41be09b.png)

GUIはここで終了してしまうため、ここから先のリカバリ作業は先ほどと同様です。

## エラーの原因について

uim関連のパッケージで何かしらの解決できない不整合が発生していることは分かります。ここで無事に20.04.1にアップグレードできたシステムのuimのバージョンは、1:1.8.8-6.1build2 でした。

バージョンアップの元になった18.04.5のシステムでは、1:1.8.6+gh20180114.64e3173-2build2 が稼動しています。

sdapsを稼動させるために必要なtexliveについては、2017.20180305-1 が18.04.5のシステムにはインストールされています。

あらかじめ、uimとtexliveとその関連パッケージをアンインストールして、先ほどと同様の作業を実施します。

```bash
$ sudo apt remove uim*
$ sudo apt remove telixve*
$ sudo apt autoremove
```

先ほどエラーにもなったfontconfig関連のパッケージも含めて削除されました。
ここで改めて、20.04.1へのアップグレードを試みます。

```bash
$ sudo do-release-upgrade -d
```

この状態では、まったく問題なくアップグレードが終了し、再起動を促され、作業が完了しました。


## 比較のための Ubuntu 18.04 Server による再現を試してみる

VMware上には作業用にUbuntu 18.04 Serverのイメージがあるので、これをcloneして、uim-skk, sdapsを導入したubuntu 18.04.5を作成し、do-release-upgradeしていくことにします。

```bash:ubuntu18.04上での作業
$ sudo apt update
$ sudo apt dist-upgrade -y
## ここで停止し、スナップショットを取得 ## ここ以降は、18.04.5に更新されている
$ sudo apt install uim uim-skk
## 再び停止し、スナップショットの取得
$ sudo do-release-upgrade -d
```

この作業自体は問題なく終了し、20.04.1に更新することができました。
問題が発生した18.04.5のパッケージを確認すると、sdapsのために導入されているtexliveはいろいろ問題がありそうだとは思うのですが、uimがエラーになるのは少し不思議だったので、uim,uim-skkを導入していて問題なくアップグレードできたシステムと比較してみます。

```text:アップグレードできなかった18.04.5のuim関連パッケージ
ii  libuim-custom2:amd64                   1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - uim-custom API library
ii  libuim-scm0:amd64                      1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - uim-scm API library
ii  libuim8:amd64                          1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - uim library
ii  uim                                    1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - main binary package
ii  uim-data                               1:1.8.6+gh20180114.64e3173-2build2              all          Universal Input Method - data files
ii  uim-fep                                1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - front end processor
ii  uim-gtk2.0                             1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - GTK+2.x front end
ii  uim-gtk2.0-immodule:amd64              1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - GTK+2.x IM-module
ii  uim-gtk3                               1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - GTK+3.x front end
ii  uim-gtk3-immodule:amd64                1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - GTK+3.x IM module
ii  uim-mozc:amd64                         2.20.2673.102+dfsg-2ubuntu0.18.04.1             amd64        Mozc engine for uim - Client of the Mozc input method
ii  uim-plugins:amd64                      1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - plugin files
ii  uim-qt5                                1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - Qt 5.x front end
ii  uim-qt5-immodule:amd64                 1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - Qt 5.x IM module
ii  uim-skk                                1:1.8.6+gh20180114.64e3173-2build2              all          Universal Input Method - SKK support metapackage
ii  uim-xim                                1:1.8.6+gh20180114.64e3173-2build2              amd64        Universal Input Method - XIM compatibility interface
```

このパッケージの中での差異は、uim-mozcだけしか見当りません。
このtexlive関連と、uim-mozcを除いて20.04.1にアップグレードしてみます。

この結果は、同様にエラーが発生し、20.04.1へのアップグレードに失敗しました。

もう一方のUbuntu 18.04 Serverのイメージに、uim,uim-skk,texlive,texlive-xetex を導入した状態で、do-release-upgradeを実行してみます。

この結果は、問題なく成功しました。

# さいごに

期待していたのは、いくつかのパッケージを導入してpureなubuntu serverのイメージがdo-release-upgradeで20.04.1に更新できない状態を作る事でした。

関連する情報を検索して、再度挑戦したいと思います。