2008年11月16日日曜日

早速 wapbl がパニックしてくれた

新しいユーザーランドをインストール
( # ./build.sh -O ../obj -T ../tools -U install=/ )
してたらパニックしたよ。。

メッセージは次のとおり
panic: wapbl_flush: current transaction too big to flush

fatal breakpoint trap in supervisor mode
trap type 1 code 0 eip c0233fbc cs 8 eflags 246 cr2 bbb81470 ilevel 0
Stopped in pid 2983.1 (nbpax) at netbsd:breakpoint:0x4: popl
db{1}>

再起動したらあがってこなくなったので boot.iso であげて fsck..
ジャーナルがおかしくなってたよ、、とほほ。

ソースだとここかな。

http://fxr.watson.org/fxr/source/kern/vfs_wapbl.c?v=NETBSD#L1349

一旦 soft updatesにもどした。快調快調。
wapbl は /home くらいで使っておくのがいいかもしれないね。

% mount -t ffs
/dev/wd0a on / type ffs (soft dependencies, local)


fstab 書き換えだけで済むような実装になっててステキ。

たまには NetBSD


PSP でネットワークまわりだかどこかでつかわれてる(はずの)NetBSD.

育て方がよくわかってないけどちょっと前 WAPBL が使えるようになったり
5.0 のリリースサイクル開始されたりしたのでたまには NetBSDをば、、
(Mac OS X 上の VMware Fusion で仮想マシン作成)

i386cd-4.0.1.iso を入手
インストール. パーティションはめんどくさいので / と swap のみ. / は ufs2 にする
current を追跡
tar玉とってきて展開、/etc 更新してリブート、これでひとまず 4.0.1 -> 5.99.01 に

bash-3.2# uname -mrs
NetBSD 5.99.01 i386

その後「最新の」 current にする、けど長いのでコマンド叩いて暫く放置。

pkgsrc guide みる
pkgsrc-2008Q2 とってきて使ってたけど perl がビルドできない、、、
cvs update して更新したあともダメだなー。。

kernfs がなんか変。なんもない

bash-3.2# ls /kern/
bash-3.2#

??
(カーネルビルドしなおして再起動したら解消)

WAPBL は fstab のとこに log 書くだけで OK 。素晴らしい。
softdep をやめて WAPBL にした。パフォーマンスはいいらしい。

ここ -> 31 Jul 2008 - FFS へのメタデータジャーナリングに対応
彼らはまた、性能ベンチマークをいくつかおこないましたが、 WAPBL の性能は soft-dependencies 有効でのマウントに非常に近いものであり、 (安全ではない) async でのマウントより少しだけ遅いものでした。 クラッシュや予期せぬ電源断において、 ジャーナルされたファイルシステムではブート時に長時間のファイルシステムチェックは必要なくなり、 カーネルが数秒の間にログを再生することになります。 これにより、クラッシュの高速な復旧が可能となり、 総停止時間の現象と高い可用性が実現できます。
mount コマンドで log になっているのを確認。

bash-3.2# mount -t ffs
/dev/wd0a on / type ffs (log, local)

こんなかんじ
20080731:
WAPBL (metadata journaling support) has been added, but at this
time isn't backwards compatible with pre-WAPBL aware kernels
and userland (fsck_ffs in particular). Please make sure you
don't use a journaled filesystem with an older kernel/userland,
especially an uncleanly mounted journaled filesystem. WAPBL
also requires the super block to be in the UFS2 format. You
can use fsck_ffs -c 4 to update the superblock format.

入れてみたあと気づいたのが、
・openssl が 0.9.9-dev
・openssh は hpn パッチあてられてる.これ地味にいいかもしれんね

bash-3.2# openssl version
OpenSSL 0.9.9-dev 09 May 2008
bash-3.2# ssh -V
OpenSSH_5.0 NetBSD_Secure_Shell-20080403, OpenSSL 0.9.9-dev 09 May 2008
bash-3.2# telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.0 NetBSD_Secure_Shell-20080403-hpn13v1
^]
telnet> quit
Connection closed.

そういえば citrus 関連ってどうなってるのかさっぱり解らないなぁ。。



追記: perl ビルドの件、コメントに依ると pkgsrc-2008Q3 だとよさそう。いかん、日本語訳のサイトみてたおかげか、 2008Q3 の存在に気づけなかった、、 orz...

先月でてる 14 Oct 2008 - pkgsrc-2008Q3 released

2008年11月15日土曜日

libedit.2.dylib 入れ直した

そのいち
そのに
そのさん
と、libedit2.dylib いかれてると思ってたけど、
ぐぐってみたところ、ど〜も知らぬ間にオリジナルの libedit.2.dylib を上書きしてしまっていた模様。。

さて、どうやって元に戻そうか、、、と思って試みたのが以下

・MacPorts で libedit いれて symlink
苦し紛れにこれやればなおるんじゃね?
と思って入れて symlink 張ってみたものの、、バージョンが違うぞと叱られた

% ftp
dyld: Library not loaded: /usr/lib/libedit.2.dylib
Referenced from: /usr/bin/ftp
Reason: Incompatible library version: ftp requires version 2.0.0 or later, but libedit.2.dylib provides version 1.0.0
zsh: trace trap ftp

2.11 なんだけどなー。なんか違うの?
% port installed libedit
The following ports are currently installed:
libedit @20080712-2.11_0 (active)

諦めて、次。

・Darwin Source Code の libedit 入れる
あ、そういやソース公開されてるじゃないか、と思い出し(おそい
Apple のサイトへ。
Apple - Mac OS X 10.5.5 (Darwin 9.5)

お目当てのものはこれ
libedit-11.tar.gz

手順は、、適当
0. tarball ゲット
1. libedit-11.tar.gz を展開 & cd
2. make
3. make install
4. Debug ディレクトリがなくてエラーになるので mkdir /tmp/libedit/Debug
5. また make install
6. /tmp/libedit/Release/usr/lib 以下に欲しいものができてるので
sudo install -m 755 /tmp/libedit/Release/usr/lib/libedit.2.dylib /usr/lib

そして、、、

% /usr/bin/python
Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D
% /usr/bin/ftp
ftp> quit
% /usr/bin/bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
quit

無事直りましたとさ・・・

2008年11月8日土曜日

libedit.2.dylib にリンクしてるバイナリがおかしい(?)

libedit.2.dylib にリンクしてる、一部のコマンドがおかしい。

追記: libedit.2.dylib 入れ直して解決した

こんな具合

% bc
dyld: Symbol not found: _history
Referenced from: /usr/bin/bc
Expected in: /usr/lib/libedit.2.dylib

zsh: trace trap bc
% dscl
dyld: Symbol not found: _history
Referenced from: /usr/bin/dscl
Expected in: /usr/lib/libedit.2.dylib

zsh: trace trap dscl
% ftp
dyld: Symbol not found: _history
Referenced from: /usr/bin/ftp
Expected in: /usr/lib/libedit.2.dylib

zsh: trace trap ftp

sqlite3 や ntpq などは問題なし
% otool -L /usr/bin/sqlite3
/usr/bin/sqlite3:
/usr/lib/libsqlite3.0.dylib (compatibility version 9.0.0, current version 9.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
/usr/lib/libedit.2.dylib (compatibility version 2.0.0, current version 2.9.0)
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
% otool -L /usr/bin/ntpq
/usr/bin/ntpq:
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/usr/lib/libedit.2.dylib (compatibility version 2.0.0, current version 2.9.0)
/usr/lib/libcrypto.0.9.7.dylib (compatibility version 0.9.7, current version 0.9.7)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)

% /usr/bin/sqlite3
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .quit
% /usr/bin/ntpq
ntpq> help
ntpq commands:
addvars debug lopeers passociations rl
associations delay lpassociations passwd rmvars
authenticate exit lpeers peers rv
cl help mreadlist poll showvars
clearvars host mreadvar pstatus timeout
clocklist hostnames mrl quit version
clockvar keyid mrv raw writelist
cooked keytype ntpversion readlist writevar
cv lassociations opeers readvar
ntpq> quit

"MySQL" が

mySQL や Mysql と書いてあるのをみると、やや気持ちわるい、、

同様に、PostgreSQL が postgreSQL て書いてあるとやや気持ちわるい。

2008年11月7日金曜日

WEB+DB PRESS vol.47



書評でもなんでもないけど

ざっと自分にとってはこんな具合。

ネットワークプログラミングの基礎知識
Java で萎えた

memcached ベストプラクティス
これは読みたかった

CodeRepos の全て
CodeRepos にぶちこめるコードがないZE

武者さんの連載は毎回楽しみ。第三回。

python 以外もおかしい、、

python がおかしいんだけど、
どうも ftp コマンドもおかしい。

追記: libedit2.dylib 入れ直して解決した

ftp
% /usr/bin/ftp
dyld: Symbol not found: _history
Referenced from: /usr/bin/ftp
Expected in: /usr/lib/libedit.2.dylib

zsh: trace trap /usr/bin/ftp

えー、なんで Symbol not found になるの。。