2019-03-14 / @syui

arch / arch

arch32でlibreadlineのerrorが出た場合の回避策

arch32で詰みかけのerrorが出た話。

現在、32bitは公式では提供されてないので、https://archlinux32.org/からダウンロードして使ってるもの。pacman-mirrorとかもいつもとは違うURLだったりする。

$ pacman -Syu
: GPGME エラー: 無効な暗号エンジンです

$ pacman-key --refresh-keys
/usr/bin/bash: error while loading shared libraries: libreadline.so.7: cannot open shared object file: No such file or directory

$ pacman -S readline
: GPGME エラー: 無効な暗号エンジンです

$ cd /var/cache/pacman/pkg
$ pacman -U readline.pkg
/usr/bin/bash: error while loading shared libraries: libreadline.so.7: cannot open shared object file: No such file or directory

ここで、あれ?なんかやばくない?と感じ始めた。

なんでかっていうと、アップデートするにはgpg-keyの更新が必要で、gpg-keyを更新するにはアップデート(おそらくreadline)が必要みたいな感じになってるから、多分…。

問題は、pacmanに使われてるbash scriptにlibreadlineが使われてることにあるみたいで、結局、既存のlibにシンボリックリンクを貼りました。その後、キーを更新して、アップデートが無事成功。

$ ln -s /usr/lib/libreadline.so.8.0 /usr/lib/libreadline.so.7
$ pacman-key --refresh-keys
$ pacman -Syu