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

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



やました と申します。

MLでこの情報を見ていたにもかかわらず、ハマってしまったものです。。。。

こういう人もいたよ、という情報展開を。


最近、xfceが突然固まったりする症状がでていたので、

「xまわりのモジュールアップデート無いかなぁ」と思い、get_pkginfoを実行し ました。

モジュールを確認すると、関連しそうなものがあったので、get_pkginfo -a を 動かしました。

すると、pkgtoolsのところか、その後のところで、「installpkg,removepkgが無い」

というようなメッセージでパッケージ更新が停止。 たしかに/sbinから消えて ました。

どうしようか悩んだんですが、ここでは、強引にpkgtoolsパッケージをを/直下 で展開し、

doinst.shや/sbin/installerフォルダを確認しながらなんとか修復。

その後、pkgtools -i でpkgtools以外を適用し、最後にpkgtoolsを適用しました。

その際、「pkgtoolsは削除できません」「pkgtools7をインストールします」  (文言はうろ覚え)と

いうようなメッセージが表示されましたが、そのまま進むと正常終了。

installpkg,removepkg無い状態って、「これって缶詰のなかの缶切りだよなぁ」 と思ったときに、

「最近、缶詰の中の缶切りって文言を見たなぁ」という流れで、こじまさんの メールを思いだしだ次第です(^^;


この後続きがありまして、再起動すると xfceが起動せず。

画面には、「libc-2.32が必要だけど2.30だよ」という旨のメッセージが表示さ れました。

ただしget_pkginfoでは何も表示されないので、これはこれで悩みましたが、ML メールを再度見て

Plamo-test/for-7.x/x86_64/からglibcー2.32, libc-2.32のパッケージを落とし てきて

updatepkgで適用、再起動で、無事xfceが立ち上がりました。


もっとスマートなやり方がありそうですが、最近、楽ちんなget_pkginfoに頼 りっきりだったので、

この手のトラブルにもなかなか対応できなくなっている1ユーザの昨日の顛末で した。m(_ _)m


以上


On 2020/08/20 20:41, KOJIMA Mitsuhiro wrote:

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 以降に更新するにはこういう形が必要になりそうなので、
よろしくお願いします。

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

-------
こじま




Follow-Ups
[plamo:33413] Re: [FYI] glibc-2.32 breaks install tools, KATOH Yasufumi

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