やまものブログ

メモ書きブログです (^_^;A

Ubuntu 16.04LTS にて "apt update"失敗

昨日、Ubuntu 18.04 が "EXT4-fs error (device sda2)" みたいなエラーでまともに起動できなくなりました。ドライブがもうダメになったのかと思われます。詳細は調べていませんが。モノは Samsung 840EVO 500GBで、購入してから4年半経過しています。保証は840PROなら5年あるようですが、EVOは3年とのこと。メインドライブが壊れたことはHDDでは何度か経験していましたが、SSDは今回初めてです。

新しいSSDドライブに Ubuntuクリーンインストールしました。バージョンは、今更ながら Ubuntu 16.04LTS です。petalinuxなるものを使うためです。
16.04LTS のインストールは、Windowsにて ISOこちらからダウンロードして、Rufus でUSBドライブに焼いて、起動ドライブを準備しました。

USBからブートして、特に悩むこともなく、デフォルト設定でSSDドライブからブートできところまでサクサク進められました そこで、ソフトウェアのアップデートを促されたのですが、18.04LTSにアップグレードするかと聞いてきます。気持ちはありがたいのですが、やむを得ない事情があるので仕方がない。Windowで例えると、主流の10をあえて避けて 7を使うみたいなもので、取り残されている感が寂しい

促されるままのアップデート(アップグレード?)は 18.04行きのようなので、コマンドラインから apt を使うことにしました。すると、見たこともないエラーに遭遇 これはドライブの問題じゃなくて、マザーボードに何らかの障害あがあるのか?!と焦りました

$ sudo apt update
         : <中略>
*** Error in `appstreamcli': double free or corruption (fasttop): 0x0000000001fa8dd0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7f8eca5e2725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7f8eca5eaf4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f8eca5eeabc]
/usr/lib/x86_64-linux-gnu/libappstream.so.3(as_component_complete+0x439)[0x7f8eca96dd19]
/usr/lib/x86_64-linux-gnu/libappstream.so.3(as_data_pool_update+0x44a)[0x7f8eca96ef0a]
/usr/lib/x86_64-linux-gnu/libappstream.so.3(as_cache_builder_refresh+0x1c2)[0x7f8eca964272]
appstreamcli(ascli_refresh_cache+0x12e)[0x4049de]
appstreamcli(as_client_run+0x6fb)[0x403ceb]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f8eca58b830]
appstreamcli(_start+0x29)[0x403519]
======= Memory map: ========
00400000-00408000 r-xp 00000000 08:02 8126514 /usr/bin/appstreamcli
00607000-00608000 r--p 00007000 08:02 8126514 /usr/bin/appstreamcli
00608000-00609000 rw-p 00008000 08:02 8126514 /usr/bin/appstreamcli
01dd0000-03a25000 rw-p 00000000 00:00 0 [heap]
         : <中略>
7f8ecb6a9000-7f8ecb6aa000 rw-p 00026000 08:02 2625925 /lib/x86_64-linux-gnu/ld-2.23.so
7f8ecb6aa000-7f8ecb6ac000 rw-p 00000000 00:00 0
7f8ecb6ac000-7f8ecb6b1000 rw-p 00000000 00:00 0
7ffd51e59000-7ffd51e7a000 rw-p 00000000 00:00 0 [stack]
7ffd51e93000-7ffd51e96000 r--p 00000000 00:00 0 [vvar]
7ffd51e96000-7ffd51e98000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted (core dumped)
パッケージリストを読み込んでいます... 完了
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
E: Sub-process returned an error code



しかし、エラーメッセージで検索すると、ちゃんと回避方法が親切に解説されていました

Ubuntu 16.04のapt updateでappstreamcliがクラッシュする

Ubuntu 16.04のapt updateでappstreamcliが固まりアップデートができない問題

上記サイトに掲載されているとおりで解消できました
そのままコピペさせてもらいます。ありがとうございましたm(__)m

#appstreamを無効化
sudo killall -KILL apt.systemd.daily
sudo mv /etc/apt/apt.conf.d/50appstream /etc/apt/apt.conf.d/50appstream.disable
#apt update/upgrade
sudo apt update -y
sudo apt upgrade -y
#appstreamを有効化して再度update
sudo mv /etc/apt/apt.conf.d/50appstream.disable /etc/apt/apt.conf.d/50appstream
sudo apt update -y


本題じゃないですが、aptコマンドに "-y" をつけると、"[Y/n]"の確認を自動で"Y"扱いにしてくれるのですね。今まで知りませんでした。これ便利です