はじめに
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-draw
で libreoffice-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