do-release-upgradeによるUbuntuアップグレードで「修復不可能な問題」と表示された時の対応

f:id:swytel:20180507150208p:plainUbuntu 14.04LTSから16.04LTSにアップグレードすべく、次のサイト等を参考にdo-release-upgradeで実施したところ、Ubuntu非公式レポジトリを有効にしていたために、ハマったのでメモ.

まずは、上記ブログにもあるように、バージョン確認をしてから、現行システムの更新を行い,マシンを再起動しました.

$ lsb_release -d
Description:    Ubuntu 14.04.5 LTS
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

さらに、下記の方法で、リリースチャネルの確認と設定をします.

$ cat /etc/update-manager/release-upgrades

自分は、最下行が"Prompt=never"になっていたので、viで上記ファイルを開き、"

Prompt=lts

に変更しました。

しかしその後

$ sudo do-release-upgrade

としたところ、次のエラーが表示されてしまいました。

f:id:swytel:20180507150208p:plain

自分が実行しているのは14.04LTSで、リリース前のUbuntuを実行しているわけはありませんが 3番目の

* Ubuntu以外から提供されている非公式パッケージ

には、心当たりがあります。しかし、どの非公式パッケージを入れたか、またどうやって削除するかが分からない.

結論から言うと,Canonicalパッケージやextrasが悪さをしているようでした. 自分は,これらのレポジトリに関する記述をコメントアウトすることで,先に進むようになりました.

$ sudo vi /etc/apt/sources.list
(次の行をすべてコメントアウト)
# deb http://archive.canonical.com/ubuntu trusty partner
# deb-src http://archive.canonical.com/ubuntu trusty partner
# deb http://extras.ubuntu.com/ubuntu trusty main
# deb-src http://extras.ubunut.com/ubuntu trusty main

以上が終わった後,もう一度

$ sudo apt-get update
$ sudo do-release-upgrade

を実行します.

これでもエラーが出る場合は,非公式パッケージ(ppa)が原因かもしれません. 私は、元々ppaが原因だと思っていたので、下記も実行しました.

askubuntu.com

によれば、コマンドラインで下記を実行することで、自分がインストールした非公式パッケージの一覧を表示させることができます.

$ grep -RoPish '(?<=ppa.launchpad.net/)[^/]+/[^/ ]+' /etc/apt | sort -u | sed 's/^/ppa:/'

自分は、これを実行したところ

ppa:jtaylor/ipython
ppa:mc3man/trusty-media
ppa:thefanclub/grive-tools
ppa:webupd8team/java

などと出てきました.

今度はこれを消去します.これには、ppa-purgeというツールを導入しておきます. PPA の追加 / 削除 - 哲朗web

$ sudo apt-get install ppa-purge

使い方としては、例えば

$ sudo ppa-purge ppa:jtaylor/ipython

などとなります。この調子で、他の非公式パッケージも削除していきます。ちなみに上記がうまくいかない場合は,次のような方法もあるみたいです. 追加した ppa のリポジトリをリストから削除する方法

sudo add-apt-repository --remove ppa:jtaylor/ipython

これでもうまくいかない方は,launchpadのppa以外に,google chromedropbox等をaptで入れたことが原因かもしれません. これらのパッケージを消すには,まずdpkgで消す,次にsources.list.d/のリストから,debで始まるレポジトリの一行をコメントアウトする,という手順を取ります.

$ sudo dpkg -r google-chrome-stable
$ sudo dpkg -r dropbox
$ cd /etc/apt/sources.list.d/
$ sudo vi dropbox.list
$ sudo vi google-chrome.list

以上を実行した上で

$ sudo apt-get update
$ sudo do-release-upgrade

で,アップグレードできるかどうか,試してみてください.

さて、私の場合、上記でアップグレードが進んだのですが、完了一歩手前というところで 「処理中にエラーが発生しました」とコンソールに表示され、次々とエラーダイアログのGUIがポップアップする事態になりました。 再起動してくださいといったダイアログもあったため、その通りにしたら まったく起動しない最悪のケースに...

もしかしたら、リブート前に、次のように対応したら良かったのかもしれませんが...後の祭り. http://tech.uribou.tokyo/ubuntu_upgrade_to_16/

というわけで、私はあまり、do-release-upgrade をお勧めしたくなくなってきました. 無事、Live USBから復活できたら、次回その方法について記載しようと思います。