vine linux 3.2 Tips
sorry Japanese only
PAGE作成日 2007/01/05
最終更新日 2007/06/02
page size = Mbyte


関連するページ Tips1 Tips2 Tips3

vine3.2を installして setupを行っていったときの tipsです。

kernel 2.4.33への update時 make depで include/asmが無いと怒られる

vine linux 3.2の kernelを 2.4.33へ sourceから作ろうとしていたとき
make depを行うと以下のような errorが出ました
scripts/mkdep -- `find /usr/src/linux-2.4.33/include/asm /usr/src/linux-2.4.33/include/linux /usr/src/linux-2.4.33/include/scsi /usr/src/linux-2.4.33/include/net /usr/src/linux-2.4.33/include/math-emu \( -name SCCS -o -name .svn \) -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
find: /usr/src/linux-2.4.33/include/asm: そのようなファイルやディレクトリはありません
find: /usr/src/linux-2.4.33/include/linux/autoconf-BOOT.h: そのようなファイルやディレクトリはありません
find: /usr/src/linux-2.4.33/include/linux/autoconf-smp.h: そのようなファイルやディレクトリはありません
scripts/mkdep -- init/*.c > .depend

include/asmというファイルは何を installすると存在するようになるのか?を調べると
[root]# rpm -qf asm
kernel-headers-2.4.31-0vl1.12
と言うことで、kernel-headersを rpmコマンドで installしましょう

このリンクは make mrproperコマンドを実行すると削除される対象となっているようです
順番的に make mrproperを実行してから kernel-headersを rpmコマンドで installでしょうか。謎です?

それと autoconf-BOOT.hと autoconf-smp.hですが、include/linuxディレクトリーのファイルは /bootへ向けてのリンクファイルで、実際には /bootディレクトリーに同じ名称のファイルがありそうな気がするのですが、私の vine linux3.2にはありません
と言うことで、そんな実在しないファイルへ向けてリンクを張るな!と include/linuxディレクトリーのリンクファイルを削除しました (何と荒療法・・)
その状態で kernelを作成し、無事動作しています。

sambaを設定しても session setup failed: NT_STATUS_LOGON_FAILURE が出る

linuxへ telnetで入っていき、linux上にて以下のコマンドを用いて確認したときに出ます
[root]# smbclient //localhost/nanasi -U miyazaki
Password:
session setup failed: NT_STATUS_LOGON_FAILURE

winXPの CMDプロンプトで実行すると以下のエラーになります
H:\>net view \\REMOTEPC
システム エラー 5 が発生しました。

アクセスが拒否されました。

エラーとなる理由
smbpasswd miyazakiをやってない
smbusersへ間違って root = administrator miyazaki などと記述してしまっている

NT_STATUS_BAD_NETWORK_NAME が出る

linuxへ telnetで入っていき linux上にて以下のコマンドを用いて確認したときに出ます
[root]# smbclient //localhost/nanasi -U miyazaki
Password:
Domain=[VINELINUX] OS=[Unix] Server=[Samba 3.0.14a-0vl0.4]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME

上の例で言うと、共有名 nanasiが無いときにエラーとなります
共有名が無いとは、smb.confに [nanasi]セッションが無い。
又、nanasiの共有名はあっても smb.confの [nanasi]セッションにて指定されたディレクトリーが実際に無い場合にも上記エラーとなります

PHP5の configureで expr: syntax errorが出る

2007/06/02

PHP5.2.3を configureするとき、以下のエラーが表示されました
checking for a sed that does not truncate output... (cached) /bin/sed
expr: syntax error
./configure: line 2334: test: =: unary operator expected
expr: syntax error
./configure: line 2340: test: =: unary operator expected
expr: syntax error
./configure: line 2347: test: =: unary operator expected
expr: syntax error

exprコマンドを実行するときにエラーを起こしているようです

解決策は、exprコマンドのバージョンを上げること。
vine linux 3.2標準の exprコマンドは、
[root]# expr --version
expr (GNU sh-utils) 2.0.11
これを、coreutilsの updateを行い exprのバージョンを 6.9へ上げることにより、
php5.2.3の configureでエラーが出ることはなくなりました
[root]# expr --version
expr (GNU coreutils) 6.9

使用したファイルは、www.gnu.orgの coreutilsです。

しかし、coreutilsには exprコマンド以外にもたくさんのファイル郡が含まれているのです。
configure,make,make installでエラー無く終了しコマンド郡がインストールされてしまうのですが、
updateが必要なのは exprコマンドだけです。
configureとかのオプションで exprのみをコンパイル掛けることも出来そうな気がするのですが、
やり方が分かりません。
メインマシンで実行するのは恐ろしかったので、サブマシンでえいや!っと make installしたら、
ほぼ全てのコマンド郡が /usr/local/binへ installされました・・
updateの必要な exprコマンドのみを /usr/local/binより /usr/binへコピーします。
ついでに、not strippedの状態でファイルサイズが 276kbyteと大きかったので strip exprと行って
73kbyteへと小さくしました。
その他の /usr/local/binへコピーされたファイルはどうしようかな。
ちなみに、このようなファイルが作成されます

メインマシンへは exprコマンドのみをコピーしました。
ちなみに make installの結果はこちら => coreutils-make-install.txt

PHP5の makeで undefined reference to libiconvが出る

configureは一見エラー無いような雰囲気で終了するのに、makeを実行すると以下のエラーが出ました
/tmp/php-5.2.3/ext/iconv/iconv.c:339: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x2b8):/tmp/php-5.2.3/ext/iconv/iconv.c:376: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x364): In function `php_iconv_string':
/tmp/php-5.2.3/ext/iconv/iconv.c:432: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o(.text+0x39c):/tmp/php-5.2.3/ext/iconv/iconv.c:444: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x3bd):/tmp/php-5.2.3/ext/iconv/iconv.c:458: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x3e0):/tmp/php-5.2.3/ext/iconv/iconv.c:469: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x42f): In function `_php_iconv_strlen':
/tmp/php-5.2.3/ext/iconv/iconv.c:594: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o(.text+0x48c):/tmp/php-5.2.3/ext/iconv/iconv.c:617: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x4b6):/tmp/php-5.2.3/ext/iconv/iconv.c:651: undefined reference to `libiconv_close'

どうも googleして調べてみると iconv.hと言うファイルが原因のようです。
/ より iconv.hを検索すると
[root]# find . -name "iconv.h*" -ls
 98607    4 -rw-r--r--   1 root     root         1949 10月 29  2005 ./usr/include/iconv.h
292512    8 -rw-r--r--   1 root     root         4755  8月 18  2006 ./usr/local/include/iconv.h
確かに 2個存在します

それぞれのファイルは、何をした時にそこへ入ったかを調べてみたところ
[root]# rpm -qf /usr/include/iconv.h
glibc-devel-2.3.3-3vl1.3
[root]# rpm -qf /usr/local/include/iconv.h
ファイル /usr/local/include/iconv.h はどのパッケージにも属していません

google先生に教わったところ /usr/local/include/iconv.hを削除すると makeが通るようになるとのこと
(configure内で、先に調べに行ってるとか)
と言うことで /usr/local/include/iconv.hをリネームして make通るようになりました

続く

11285
戻る