HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

Ubuntu 18.04にgit入れようとしてハマったこと

 

 

follow us in feedly

はじめに

git 入れようとしたらハマった。最終的には入ったのだが、何が正しいのか、どうして治ったのかは全くわからない…。参考にはしないほうが良いと思う。

事象

とりあえずインストール仕立てほやほやのUbuntu18.04へ git をインストールしようとしたら下記のようなエラーが発生。

パッケージリストを読み込んでいます... エラー!
E: パッケージキャッシュファイルが壊れています。ハッシュが違います
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません
E: パッケージキャッシュファイルが壊れています

なるほどよくわからん。OSのインストールの時点で何か壊れてしまったのだろうか…?言われたとおりに apt update を実行。

ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease                  
ヒット:2 http://archive.ubuntulinux.jp/ubuntu bionic InRelease                 
ヒット:3 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease          
ヒット:4 http://archive.ubuntulinux.jp/ubuntu-ja-non-free bionic InRelease     
ヒット:5 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease        
取得:6 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]   
88.7 kB を 2秒 で取得しました (36.3 kB/s)
Segmentation fault (core dumped)
Segmentation fault読み込んでいます... 32%

この後、再度 apt install git を実行、しかし下記のようにうまく行かず。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 git : 依存: liberror-perl しかし、インストールされようとしていません
       依存: git-man (> 1:2.17.1) しかし、インストールされようとしていません
       依存: git-man (< 1:2.17.1-.) しかし、インストールされようとしていません
 libreoffice-avmedia-backend-gstreamer : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-base-core : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-calc : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-draw : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-gnome : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-gtk3 : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-math : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
 libreoffice-writer : 依存: libreoffice-base-core (= 1:6.0.7-0ubuntu0.18.04.8) しかし、1:6.0.7-0ubuntu0.18.04.10 はインストールされようとしています
 python3-uno : 依存: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.10) しかし、1:6.0.7-0ubuntu0.18.04.8 はインストールされようとしています
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

おいい、libreofficeばっかりじゃないか…。とりあえずこれも言われたとおりに apt --fix-broken install を実行してみる。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
依存関係を解決しています ... 完了
以下の追加パッケージがインストールされます:
  libreoffice-core libreoffice-writer
提案パッケージ:
  fonts-crosextra-caladea fonts-crosextra-carlito libreoffice-base
  libreoffice-java-common default-jre | sun-java6-jre | java6-runtime | jre
以下のパッケージはアップグレードされます:
  libreoffice-core libreoffice-writer
アップグレード: 2 個、新規インストール: 0 個、削除: 0 個、保留: 105 個。
147 個のパッケージが完全にインストールまたは削除されていません。
40.2 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 4,096 B のディスク容量が消費されます。
続行しますか? [Y/n] y
E: Sub-process /usr/bin/dpkg received a segmentation fault.

ここでもうまく行っていない様子。

対応

設定未完のパッケージ把握

sudo dpkg --audit は設定が何らかの理由で完了できていないパッケージを表示してくれる。 こいつで表示してみると、信じられない量のパッケージが表示されたので割愛する…。

パッケージの設定を実施

とりあえず、設定を完了するためには dpkg --configure -a を走らせる。これで完了していないパッケージの設定をやってくれるのだが、やはり最後まで終わったところで下記のパッケージたちが設定できずに残っていた。

処理中にエラーが発生しました:
 libreoffice-draw
 libreoffice-avmedia-backend-gstreamer
 libreoffice-ogltrans
 libreoffice-impress
 libreoffice-math
 libreoffice-base-core
 libreoffice-calc
 python3-uno
 libreoffice-gtk3
 libreoffice-gnome

なんだかこいつらがうまく設定されていないようだが、何を解決すれば良いのかは定かではない。

設定できなかったパッケージの削除

とりあえず、libreoffice使わない気がするし、抹消してしまうことにした…。例えば、dpkg --remove --force-remove-reinstreq libreoffice-drawlibreoffice-draw を削除できるはずである。 しかし実際には下記のような依存関係によってエラーが発生してしまった。

dpkg: 依存関係の問題により、libreoffice-draw の削除ができません:
 libreoffice-impress は以下に依存 (depends) します: libreoffice-draw (= 1:6.0.7-0ubuntu0.18.04.10) ...しかし:
  パッケージ libreoffice-draw は削除されようとしています。

dpkg: パッケージ libreoffice-draw の処理中にエラーが発生しました (--remove):
 依存関係の問題 - 削除しません
処理中にエラーが発生しました:
 libreoffice-draw

とにもかくにも libreoffice-impress さんが libreoffice-draw さんを必要としていて、いきなり draw の首は取れないらしい。 じゃあ impress さんを先に抹消するしかないということで、

$ dpkg --remove --force-remove-reinstreq libreoffice-impress
dpkg: 依存関係の問題により、libreoffice-impress の削除ができません:
 libreoffice-ogltrans は以下に依存 (depends) します: libreoffice-impress ...しかし:
  パッケージ libreoffice-impress は削除されようとしています。

dpkg: パッケージ libreoffice-impress の処理中にエラーが発生しました (--remove):
 依存関係の問題 - 削除しません
処理中にエラーが発生しました:
 libreoffice-impress

なるほど、更にしがみついている libreoffice-ogltrans が先のようである。ちなみにこいつは dpkg --remove --force-remove-reinstreq libreoffice-ogltrans で始末することができた。 その後、最初エラーが出ていたすべてのパッケージを削除することはせずに、 下記の手順で apt install git が成功した。 何をどこまで追って削除しなければならないかは状況によるだろうし、この対策が正しいかはわからない。

$ apt --fix-broken install
$ apt install git