2021-06-28 / syui

android / android

androidで動いてたarch-armが壊れた

android上で動かしてるarch-armのupdateを怠っていたのでpacmanがupdateできない状態、もしくは無理にupdateすると壊れる状態になってしまってたので、ほぼ詰みかけてた話です。

通常、archlinuxはpacmanが壊れてもpacman-staticのbinaryをdlしてくればいいんですけど、armにはそういうのがなかったので、pacmanが壊れると、ほぼどうしようもない感じだった。

ただ、armv7hのpackage-binaryを公開してくれてる人がいたので、とても助かりました。

https://mirror.yandex.ru/archlinux-arm/armv7h/core/

http://ftp.tku.edu.tw/Linux/ArchLinux-arm/armv7h/core/

基本的に更新を怠ってたarch-armは、最初にpacman -Sy base-develします。これで一応、必要なpackageをupdateできるはずなんですが、今回はそれでもpacmanが壊れてる状態だったので、必要なものをftpから持ってきてbinaryを置き換えます。ちなみに、解凍とか面倒ならzarchiverってアプリを使いますが、便利です。

$ pacman -Sy base-devel
$ pacman --version
error : archive_entry_digest

# libarchive
$ curl -sLO http://ftp.tku.edu.tw/Linux/ArchLinux-arm/armv7h/core/libarchive-3.5.1-1-armv7h.pkg.tar.xz
$ aunpack libarchive-3.5.1-1-armv7h.pkg.tar.xz
$ cp -rf ./libarchive-3.5.1-1-armv7h.pkg.tar/* /

$ pacman --version
error libraries : libarchive.so.13 file too short
$ ls /etc/lib/libarch*
$ ln -s /usr/lib/libarchive.so.13.15.1 /usr/lib/libarchive.so.13

$ pacman --version
pacman v6.0.0, libalpm v13.0.0

$ pacman -Syu

とりあえず直ったのでよかった。

とはいえ、backup(2019)のarch-imgがあったので、次にやるなら、おそらく、それをadb pushすると思います。

$ adb push arch-arm-back-2019.img /sdcard/
# 以下はあくまでイメージです、実際に実行できるコマンドではありません
$ chroot /sdcard/arch-arm-back-2019.img
$ pacman -S libarchive base-devel
$ pacman -Syu