UbuntuのUpdate問題ようやく解決

昨年末以来ずっと困っていた問題が漸く解決。

sudo apt update

した後に、upgradeしようとするとエラーになる問題。

:~$ sudo apt upgrade -y
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
click : 依存: python3-click-package (= 0.4.46+17.04.20170607.3-0ubuntu1) しかし、0.4.46+17.10.20170607.3-0ubuntu1 はインストールされています
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

ご神託に従って、'apt --fix-broken install'を試みるも旨くいかず。

コチラを参考にaptitudeを試す。
Ubuntuで依存関係が壊れている時の対応

:~$ sudo aptitude install click
以下のパッケージが更新されます:
click
1 個のパッケージを更新、 0 個を新たにインストール、 0 個を削除予定、168 個が更新されていない。
アーカイブの 0 B/14.8 kB を取得する必要があります。 展開後に 0 B のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] y
(データベースを読み込んでいます ... 現在 284974 個のファイルとディレクトリがインストールされています。)
.../click_0.4.46+17.10.20170607.3-0ubuntu1_amd64.deb を展開する準備をしています ...
Traceback (most recent call last):
File "/usr/bin/click", line 31, in
import gi
File "/usr/lib/python3/dist-packages/gi/init.py", line 42, in
from . import _gi
ImportError: cannot import name '_gi'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/init.py", line 5, in
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in
from apport.packaging_impl import impl as packaging
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in
import apt
File "/usr/lib/python3/dist-packages/apt/init.py", line 23, in
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/click", line 31, in
import gi
File "/usr/lib/python3/dist-packages/gi/init.py", line 42, in
from . import _gi
ImportError: cannot import name '_gi'
dpkg: 警告: サブプロセス 古い pre-removal スクリプト はエラー終了ステータス 1 を返しました
dpkg: 代わりに新規パッケージからスクリプトを実行してみます ...
Traceback (most recent call last):
File "/usr/bin/click", line 31, in
import gi
File "/usr/lib/python3/dist-packages/gi/init.py", line 42, in
from . import _gi
ImportError: cannot import name '_gi'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/init.py", line 5, in
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in
from apport.packaging_impl import impl as packaging
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in
import apt
File "/usr/lib/python3/dist-packages/apt/init.py", line 23, in
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/click", line 31, in
import gi
File "/usr/lib/python3/dist-packages/gi/init.py", line 42, in
from . import _gi
ImportError: cannot import name '_gi'
dpkg: アーカイブ /var/cache/apt/archives/click_0.4.46+17.10.20170607.3-0ubuntu1_amd64.deb の処理中にエラーが発生しました (--unpack):
サブプロセス 新しい pre-removal スクリプト はエラー終了ステータス 1 を返しました
Job for click-system-hooks.service failed because the control process exited with error code.
See "systemctl status click-system-hooks.service" and "journalctl -xe" for details.
処理中にエラーが発生しました:
/var/cache/apt/archives/click_0.4.46+17.10.20170607.3-0ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

どうやらPythonのパッケージが見つからないというようなことをおっしゃっているらしいことは分かるのだが、対処の方法がわからない。

こちらもだめ。

:~$ emerge -1v --usepkg n dev-python/pygobject:3
コマンド 'emerge' は見つかりませんでした。もしかして:
コマンド 'esmerge' - パッケージ 'tstools' (universe)
コマンド 'fmerge' - パッケージ 'fhist' (universe)
コマンド 'merge' - パッケージ 'rcs' (universe)
コマンド 'vemerge' - パッケージ 'util-vserver' (universe)
emerge: コマンドが見つかりません

そこでエラーメッセージ、ImportError: cannot import name '_gi'で検索すると以下のページがヒット。

Gnome terminal will not start

3.6の_giライブラリを3.5にリンクすれば良いとか、同じファイルを違うバージョン名にcpすればよいなどのアイデアがある。
早速試す。

:~$ cd /usr/lib/python3/dist-packages/gi/
:/usr/lib/python3/dist-packages/gi$ sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.so

で3.5のライブラリを3.6に持ってきて、

:/usr/lib/python3/dist-packages/gi$ sudo aptitude install click

を試す。すると。

以下のパッケージが更新されます:
click
1 個のパッケージを更新、 0 個を新たにインストール、 0 個を削除予定、168 個が更新されていない。
アーカイブの 0 B/14.8 kB を取得する必要があります。 展開後に 0 B のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]
(データベースを読み込んでいます ... 現在 284974 個のファイルとディレクトリがインストールされています。)
.../click_0.4.46+17.10.20170607.3-0ubuntu1_amd64.deb を展開する準備をしています ...
click (0.4.46+17.10.20170607.3-0ubuntu1) で (0.4.46+17.04.20170607.3-0ubuntu1 に) 上書き展開しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...
click (0.4.46+17.10.20170607.3-0ubuntu1) を設定しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
shared-mime-info (1.8-1) のトリガを処理しています ...

現在の状態: 0 個 (-1) 破損, 168 個 (-1) 更新可能。

手応えあり。

:/usr/lib/python3/dist-packages/gi$ sudo apt upgrade -y

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
linux-headers-4.10.0-40 linux-headers-4.10.0-40-generic linux-image-4.10.0-40-generic
linux-image-extra-4.10.0-40-generic
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
linux-headers-4.13.0-32 linux-headers-4.13.0-32-generic linux-image-4.13.0-32-generic
linux-image-extra-4.13.0-32-generic
以下のパッケージは保留されます:
(中略)
以下のパッケージはアップグレードされます:
chromium-codecs-ffmpeg-extra firefox firefox-locale-en firefox-locale-ja fwupd libdfu1 libfwupd1
libgcab-1.0-0 libmysqlclient-dev libmysqlclient20 libtasn1-6 linux-firmware linux-generic
linux-headers-generic linux-image-generic linux-libc-dev openssh-client rsync
アップグレード: 18 個、新規インストール: 4 個、削除: 0 個、保留: 128 個。
159 MB のアーカイブを取得する必要があります。
この操作後に追加で 333 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu artful-updates/universe amd64 chromium-codecs-ffmpeg-extra amd64 63.0.3239.132-0ubuntu0.17.10.2 [1,013 kB]
・・・

という具合に進んでくれた。
第一関門通過。