[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:09648] Re: Script can't finds "libwcsmbs.so.0"
吉山@元日本語 boot-floppies メンテナです。
From: Akihiro Hirano <hirano@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Subject: [debian-devel:09635] Script can't finds "libwcsmbs.so.0"
Date: Mon, 21 Jun 1999 00:04:56 +0900
> 平野@東京理科大学です。
> 本業のほうがようやく一段落ついたので、aha2940 対策 boot-floppy の作成を再
> 開しました。が、どうしてもうまく行かないことが出てきたので、ちょっとご相
> 談させてください。
> サブジェクトにも有るように、make release でコンパイルをはじめると、途中で
> libwcsmbs.so.0 が見つからないとストップします。本当にないのかと思って確認
> すると、ちゃんと /lib/libwcsmbs.so.0 が存在しています。ldconfig の man を
> 見てみたりもしたのですが、どうもよくわかりません。何が問題なのかを教えて
> いただけるとうれしいです。
容量の少ない root イメージに様々なプログラムやファイルを押し込むため
に、インストーラの作成過程でインストーラに使われるファイルやバイナリを
小型化します。このため様々なテクニックが使用されています。
例えば、
1)cp や mv 等のコマンドを1つのバイナリで実現し、cp や mv は全てそのバ
イナリへのハードリンクにする
2)シンボリックリンクを全てハードリンクに変更する
3)バイナリが使うライブラリだけを展開する
4)バイナリが使う関数だけを持った必要最小限の標準Cライブラリを使用する
etc..
等のテクニックがあります。
このうち、3番目のテクニックで、全てのバイナリについてダイナミックリ
ンクしているライブラリをチェックしているのですが、この際 preload に指
定されたライブラリもチェックにひっかかってしまいます。libwcsmbs を使用
している場合は、/etc/ld.so.preload に libwcsmbs が指定されているので、
こいつがひっかかる事になります。
そこで、
1)チェック時に必要ないライブラリとして libwcsmbs.so* を指定してやる
2)libwcsmbs パッケージをアンインストールする
のどちらかすれば問題は解決します。
2) ですが、具体的には、rootdisk.sh の該当箇所に
+# Defined for systems with wcsmbs-locale
+lw=libwcsmbs.so.0
# Look for the required libraries under $E
TMP=`LD_LIBRARY_PATH=$E/lib:$E/usr/lib ldd $EXECUTABLES 2>/dev/null | \
- awk -v E="^$E" -v L="/lib/$ldlib" -- '$3=="not" {print $1; next}; \
+ awk -v E="^$E" -v L="/lib/$ldlib" -v W="$lw" -- '$3=="not" {print $1; next}; \
($3!~E) && ($1!~L) && ($1!~W) {print $3}' | grep -v "dynamic" |
\
sort -u`
のような変更をしてやります。
---
Name: 吉山あきら Akira Yoshiyama
E-mail: yosshy@debian.or.jp (yosshy@xxxxxxxxxxxxx)