2018/01/06 公開
私がメインに使用しているOSはUbuntu 16.04です。
最近文字入力中に応答しなくなり、しばらくフリーズしてから治ることがありました。またファイルマネージャも応答しなくなることがありました。
なので、ソフトの更新を手動で行おうと思ったところ、失敗するようになっていました。リポジトリのダウンロードサーバを変更しても変わりませんでした。
$ sudo apt update
や
$ sudo apt-get update
を行うと次が表示されます。
*** Error in `appstreamcli': double free or corruption (fasttop): 0x000000000322c640 ***
*** Error in `appstreamcli': double free or corruption (fasttop): 0x00000000012d4640 ***
Webで検索してみると、appstreamcliにバグがあるとのことです。
https://askubuntu.com/questions/943463/library-corruption-error-during-apt-get-update
libappstream3を削除したり再インストールすると、解決するらしいです。
これで解決しない人はrm /etc/apt/apt.conf.d/50appstream も行うとよいらしい。 ようするにappstreamを削除するとよいらしい。 ではappstreamcliやlibappstream3やappstreamとは何か。
https://askubuntu.com/questions/775069/what-is-appstream-why-is-it-installed-what-is-it-doing
man appstreamcli
を実行すると、
Freedesktop.orgのAppSteam projectのpageを参照せよとある。
Webでappstremを検索すると、AmazonのWeb Serviceが見つかりました。曰く
Amazon AppStream ウェブサービスはアマゾン ウェブ サービス(AWS)インフラストラクチャにアプリケーションをデプロイし、...
2つが連携しているのかどうか知りませんが、man で表示されたFreedesktop.orgがUbuntuにはインストールされていると思います。
これは全ての利用可能な全てのソフトウェアのリストを作成するサービスとのこと。
synapticパッケージマネージャyでappstreamを検索しても、関連ソフトも含めてたくさん見つかります。
$ apt rdepends appstream
を実行すると、appstreamと依存関係がある他のパッケージが表示されます。
appstream
Reverse Depends:
破壊: libapt-pkg5.0 (<< 0.9.0-3~)
推奨: check-all-the-things
破壊: libapt-pkg5.0 (<< 0.9.0-3~)
依存: plasma-discover
依存: isenkram-cli
推奨: check-all-the-things
依存: appstream-index (>= 0.9.4-1)
推奨: libappstreamqt1 (>= 0.9.4-1)
提案: appstream-doc
依存: gnome-software
ですが、Synapticの方がわかりやすい。
ん?
libapt-pkg5.0
が破壊?まあ壊れても後でなんとかなるでしょう。
Debianパッケージの依存関係の破壊(Breaks)の意味は、こちら。
https://www.debian.org/doc/manuals/debian-reference/ch02.ja.html
と説明を読んでもよく分かりませんが、バージョン制約のある依存関係であること、パッケージをアップグレードすると解決できると書かれているようです。
$ apt rdepends libappstream3
libappstream3
Reverse Depends:
依存: appstream (>= 0.9.3)
依存: limba-devtools
依存: liblimba0
依存: libappstream-dev (= 0.9.4-1)
依存: gir1.2-appstream (= 0.9.4-1)
まずsynapticでlibappstream3を削除しました。
synapticを終了して、ソフトウエアの更新を行うと、問題なく終了しました。
再びsynapticを起動して今度は、appstreamをインストールします。libappstream3に依存しているので、libappstream3にもチェックがつきます。
これらをインストールし、synapticを終了し、ソフトウェアの更新を行うと、失敗しました。
$ sudo apt update
はやはり、appstreamcliで失敗しました。
これは削除したままにしないとだめだと分かりました。
そこで今度はsynapticで、appstreamを削除しました。
ソフトウェアの更新は成功しました。
$ sudo apt update
も問題ありませんでした。