libc5 の環境で GNOME, ikill v.2.0


ikill version 2.0 is out!

ikill の最新がどこにあるのかわかんねえという意見があるので, コンピュータコーナーのトップページに置いた. ついでに, ちょっとばかりバージョンアップしておいた.

アルゴリズムに大きな変更は無いが, データの扱いが ちょっと改善されたので, バージョンを 2 とした. もっとも重要な変化は, ヘッダ情報を埋め込みではなく ps の出力から取得する ようになったことだ. これで, オプションが全然違う場合はしょうがないとしても, ps の出力フォーマットが大きく変わってもちゃんと動くし, ps の頭に日本語が出る場合はそれを使って日本語を出すぞ. (なんと, 今までそうなってなかったのか! だせえ!) また, このおかげで高速化も達成されたのだ.

バージョンアップして機能も増えたのに, 速くなるなんて, カッコイイですねえ! 自分を誉めてやりたいです(死). ただ, bash 2.0 でもちゃんと動くかどうかは, 未確認. kterm と xterm をごちゃまぜで使う人は(そんなの俺くらいか), $TERM で switch してLANG を変えとかないと, xterm や, 日本語化されてない rxvt では文字化けして読めない. なんせ, 国際イヒアプリケーション(爆)だからな. 本当は $LANG なんかじゃなくて, 直接 $TERM で case しとけば良いのだがね. どうせ shell script で, locale なんか関係無いんだから. でも, なんとなくこうしたい気分なのだ.

Slackware でも GNOME

うちの据え置きマシンは, もらいものの寄せ集めだが結構速い. それに, メモリも沢山付いている. パフォーマンスの割りにはほったらかしなので, もったいないから ちょっと活用すべくいろいろ突っ込んでみた.

gtk+-1.2 やら GNOME やらを使うために RedHat をインストールしたので, なんだか glibc2 でないと使えないという印象があるが, じつは thread と native language support を止めれば(この 2つを止めるのは寂しいかぎりだが) libc5 の環境でもコンパイルできる. GNOME の make には object-C コンパイラが必要だ. うちの据え置きの環境は, slackware 3.5 + PJE 0.1.5 なので, コンパイラが egcs 2.8 なのだ. そういうわけで, 手元に plamo のディスクがあったので, その中の contrib から egcs-obc とかいうパッケージをインストールした. コンパイラのコンパイルだけはマジでめんどくさいから, できれば避けたいのう.

make の順序は GNOME のサイトで案内されている通りで良いのだが, configure のオプションに --disable-nls が付けられる奴には, 必ずこれをつけないと make できない. zsh と, わしの compctl を使っていれ ば, これを見逃す事もなければタイプミスすることも無いわけだが, 古式ゆかしき tcsh/bash ユーザは, いちいち --help して確かめて configure してくれ. あーめんどくさいのう. なんで zsh 使わんのかのう, 信じられんわ.

まず, 問題になるのは gtk+-1.2 のコンパイルで, ここでは configure に --disable-nls だけでなく, --disable-thread も付けないとだめだ. これは, libc5 のせいである. glibc2 なら, そういうことを 何もせんでも make できるのであるが. しかも, --disable-nls してしまうと日本語も通らないのだ. しかも, こうやってコンパイルしたら, netscape の日本語入力とかの関連で環境変数 XMODIFIERS を @im=kinput2 とかしていると, segfault して起動すらしない. あ! gtk のコンパイルで, XIM を切るオプショ ンが, そういえばあったなあ. 忘れてたよ.

それから, これは俺だけかも知れないが, ファイルマネージャが, ソースをちょいと変更しないと make できなかった. いまいちナゾである. コンパイル時にエラーになった関数をコメントに してしまったので, 動かないだろうとおもったが, 何故か, 全然平気で動いている. gdb でトレースしてみたが, あんまり重たい のですぐ諦めた.

コンパイルしてしまえば, あとは, メニューに日本語が全く出ないのを除けば, glibc のバージョンと同じ使い勝手だ. あたりまえか. P5/150 だと, ファイルマネージャなどが少し重たいが, K6/233 では全く気にならない. automount が無いので, ダブルクリックしてデバイスを開くと mount し, 右クリックで umount している.

せっかくだから, 今 GIMP も 1.1.5 にしているところだ. こいつの make はさすがに時間がかかる. お, make install で exit1 しやがった. なんだこりゃ. /usr/local/lib/gimp/1.1/modules というディレクトリが無いというだけで exit 1 しやがって, だらしないのう. ディレクトリを掘ってやったらすんなり 行ったが, ginstall のバージョンが古いのかな?まあ, うまくいったから, ど うでもいいや. うわ! gtk/perl が動かん! perl を 5.005 にしないとダメみたいだな. こりゃダメだ. やりなおし.

ダメです. 全然ダメ. gtk/perl を諦めてコンパイルした. しょうがないなあ.

ついでに, Eterm も 0.8.8 をインストールした. こいつが, 透明の設定で remote のディスプレイに出現すると, どうなるのか? ちゃんと透明になるんですねえ. いやあ. X て本当に凄いですねえ. 10年まえの設計だとかいって, 馬鹿にする奴が居ますが, 何考えてんでしょうかねえ. 10年たっても, ろくでもないものしか作れねえくせに.

zsh その後

Makefile から rule の名前を引っ張って来て, make のあとにそこから補完するようにした.

make_rules () {
	if [ -f ./Makefile ]
	then
	reply=( `cat ./Makefile | grep : | sed 's/:.*//'| grep -v \\\\$` )
	else
	reply=()
	fi
	}
compctl -K make_rules make
まあ, これもとりあえずというやっつけ仕事丸出しで, ひどい実装ですが, それでもカーネルのコンパイルのときに make のあとに `menuconfig' とかを補完してくれる. make modules も make modules_install も補完してくれる. もちろん, configure してできる Makefile なら, make install やら make clean やら make uninstall やらもオッケーです. だから, ださいけどこれはこれでけっこう役に立ちますぜ. それにしても, 闇雲なバックスラッシュが哀れを誘うのう. grep がやたらとあるところが, 最 高にかっこわりい. make で -f で makefile を指定した時に, -f のあとはファイル名を補完し, そのあとは -f で指定したファイルから rule を取って来ると, かっこいいんだけ どなあ.

それにしても, こういう結構便利なのが, わりかし簡単に書けてしまうのは, 素晴らしいことです. プログラマブルシェル.