[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:33407] Re: [FYI] glibc-2.32 breaks install tools



From: KOJIMA Mitsuhiro <kojima@xxxxxxxxxxx>
Subject: [plamo:33404] [FYI] glibc-2.32 breaks install tools
Date: Mon, 10 Aug 2020 22:08:05 +0900 (JST)

> 最近、手元で GCC-10.2.0 や glibc-2.32 を試しているものの、
> glibc-2.32 では、それ以前バージョンの glibc でビルドした
> static link なコマンドが一部動作しないようで、
> その結果、installpkg/updatepkg/removepkg が動作不能になるようです。

この問題、glibc のビルド時に --enable-static-nss を指定しないと、
バイナリを static link していても実行時に libnss_files.so 等を探しに行く、
という仕様が原因だったようです。

従来、glibc のビルド時にこのオプションは指定していなかったため、
その環境で作った static link のバイナリは "ls -l"で uid と username の
変換が必要になる際、/lib/libnss_files.so を参照していたものの、
通常、このファイルは存在しているし、存在していなくても uid をそのまま返すだけで
エラーにはならなかったのに対し、glibc-2.32 では libnss_XXX.so 回りのコードが
整理され、__nss_readline() みたいな関数が追加された結果、
SegFault するようになった模様。

> と、つい最近 glibc に追加されたコードなようで、このあたりが原因かなぁ、、
> と想像しているものの、具体的な対策は思いついていません。

一応、glibc-2.32 を --enable-static-nss でビルドした環境で
作り直した static binary は、/lib/libnss_files.so の有無に関わらず
動作することが確認できたので、この環境で作り直した busybox-1.32 ベースの
パッケージ管理ツールを pkgtools7 という名前でパッケージ化しました。

現状、Plamo-test ディレクトリに置いているので、興味ある人はテストしてみてください。

ftp://plamo.linet.gr.jp/pub/Plamo-test/for-7.x/x86_64/pkgtools7-1.0-x86_64-B1.txz

従来、パッケージツールのパッケージ名は pkgtools だったけど、
/sbin/installer/ を安全に更新するために、パッケージ名を pkgtools7
に変更しています。

このパッケージを installpkg すれば、古い pkgtools パッケージは自動的に
削除されます。

パッケージツールを pkgtools7 に更新すれば、同じディレクトリにある
glibc-2.32/libc-2.32 も updatepkg でインストールできるようになります。

パッケージの更新順が影響するのはよろしくないものの、
glibc-2.32 以降に更新するにはこういう形が必要になりそうなので、
よろしくお願いします。

# このあたりの詳細は玩式草子の記事にしようと思っているので、
# 興味ある人はご期待ください :-)

-------
こじま






References
[plamo:33404] [FYI] glibc-2.32 breaks install tools, KOJIMA Mitsuhiro

[検索ページ] [メール一覧]
Plamo ML 公開システム