色々調査してくださった @matsuu せんせいには感謝。
事象
- app-i18n/atokx3-r5 から app-i18n/atokx3-r6 にアップデートする
- xterm を起動する→途中で止まる
原因
/usr/lib32/iiim/xiiimp.so, xiiimp.so.2 が本来であれば xiiimp.so.2.0.0 にリンクが張られているべきところが自分自身にリンクが張られていた。
lrwxrwxrwx 1 root root 25 1月 8 23:11 /usr/lib32/iiim/xiiimp.so -> /usr/lib32/iiim/xiiimp.so lrwxrwxrwx 1 root root 27 1月 8 23:11 /usr/lib32/iiim/xiiimp.so.2 -> /usr/lib32/iiim/xiiimp.so.2
なんでこんな事になってしまうんだろう、と調査してたところ、このバグが見つかった。
ここに書かれている通りではないが、次のように pym/portage/__init__py を変更してみたところ正常にインストールされるようになり、xterm も起動できるようになった。
def abssymlink(symlink): "This reads symlinks, resolving the relative symlinks, and returning the absolute." mylink=os.readlink(symlink) if mylink[0] != '/': - mydir=os.path.dirname(symlink) + mydir = "." mylink=mydir+"/"+mylink - return os.path.normpath(mylink) + return os.path.abspath(mylink)
このバグか!!1と発見したときは喜んだモノの、もう少し調べてみたところ、
/usr/lib64/iiim が /usr/lib32/iiim へのリンクになっていた。
/usr/lib64/iiim を削除して再インストールしてみたら、問題は出なくなった。
なんで、こんなリンクが張られたかについては判っていない。
atokx3-3.0.0-r5.ebuild:
138行目あたりでリンク貼られてるので、この辺かなーと思ったんだけど当時使ってた portage のバージョンに戻してやってみたけど再現しなかった。135 # amd64 hack 136 if use amd64 ; then 137 if [ "$(ABI=x86 get_libdir)" != "$(get_libdir)" ] ; then 138 dosym /usr/$(ABI=x86 get_libdir)/iiim /usr/$(get_libdir)/iiim || die 139 dosym /usr/$(ABI=x86 get_libdir)/libiiimcf.la /usr/$(get_libdir)/libiiimcf.la || die 140 dosym /usr/$(ABI=x86 get_libdir)/libiiimp.la /usr/$(get_libdir)/libiiimp.la || die 141 fi 142 fi
0 件のコメント:
コメントを投稿