[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)