なんか make が通らないと思って見てみると、
/usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.9/2.95.3/include/va-sparc.h:15: `__gnuc_va_list' と型が矛盾します
こんな謎のエラーが。Makefile にゴミが混入していた模様。
set title '進行' font 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
で SEGV るので調べてみると、PS_set_font 中の固定長バッファで 32 しかない。これは落ちるわけだ。
「お前のコードがおかしいんじゃ!!」とのこと。うーむ。もともと自分のコードじゃない(asm とか c++ とかわからんし)ので、どうしたもんだろう。なんとか直してみるか...。
__asm__("test %%eax, %%eax" : "=eax"(r));
しょうがないんで直してみる。constraint がおかしいって言われたんで、まず constraint って何だ?ってところを調べるところから。constraint とは制限子ってやつらしい。で、いろいろ調べてみると、GCCでインラインアセンブリを使用する方法と留意点等 for x86 というページを発見。
ここを見て、カンで次のようにしてみる。
__asm__("test %%eax, %%eax" : "=a"(r));
通ったじゃん。きちんと動作するじゃん。なんというか、狂喜乱舞。
webirc プラグインが完成したので、webgate/ircgate は廃止。短い間だったけれどありがとう。> webgate/ircgate
実戦投入してみるといろいろ問題発覚。空送信ができたり(\r\n が削除できてなかった)、XSS バグを持っていたり(< > をエスケープしてなかった)、等々の問題があったが、とりあえずは動いているようだ。
コンパイルが通らないので調べてみる。-lstdc++ が入ってない。ここで protector 関係の unresolved symbol 問題発生。-lc -lgcc_s を追加してやることで回避。
まず、前提として rime の開発は 1.8.0preview2+missing で行っているが、実際に動かしてるのは ruby 1.6 系列である。
File.open( ほげ, 'w', 0600 ) とかやってログファイルを生成しているが、0600 という perm 指定が思いっきり無視されて 0666 なファイルができてしまっている。調べてみると、これはバグというか仕様らしい。mode が 'w' ではなく、File::Constants のような数値での指定の場合だけ、perm 指定が有効になるということのようだ >
perm argument of File.open has no effect。
ここは 1.6 系に対する workaround として、mode の指定を全て File::Constants に切り換えた。
Subversionによるバージョン管理 と subversion不徹底入門 を参考に、subversion を入れてみた。以前 woody なマシンに apt で subversion を入れようとしたら、直行便 sid でしかもえらい目にあったので chroot で。
webirc から ircd に送っているコマンド等が log/channel でロギングされていない問題を発見。rime で取っている log と plum で取っている log を見比べていて気付いた。途中、plum を ruby で書き直すだけにしてしまおうかと気持ちが揺らいだが、rime から ircd に send する部分にも plugin が介入するように変更して対処。
また、webirc が nick、part 等を見ていないバグを指摘されるので調べてみると、module_function に登録するのを忘れていた。修正。
debian woody で ssh の IPv6 接続ができないのは ssh や libssl のせいではなく、tcpd が IPv6 対応していないせいだった。てことで、tcpd IPv6 を入れなければ、というわけだが、tcpd IPv6 は libc6 のヴァージョンが新しくなければならない。ということで、pin で libc6 を upgrade。2.3.1 になり、tcpd IPv6 も入った。sshd も IPv6 OK。
ところが、libc6 2.3 だと、ldap の connection が大量に増殖する現象が起こるのをすっかり忘れていた。でも ssh IPv6 は捨て難い。ところが、tpcd IPv6 を使える libc6 は、pool には既に存在してない。そこで、snapshot.debian.net から適当な libc6 を取ってきて、dpkg -i で突っ込む。これがいけなかった。GLIBC_2.3 を要求するコマンドが大量に動かなくなった。libc6 2.3.1 に上げたときに coreutils 等々も入っていったがそのせいか。
woody の {text,shell,file,debian}utils を取ってきて突っ込む。libc6、libc6-dev、nscd、libdb1-compat、libnss-ldap、libpam-ldap。まだ足りない。mount、login が要求していた libpam0g、ssh が要求していた libssl、とこれで完了。
最初から snapshot.debian.net 使っとけばよかったな。
家のマシンの HDD を新規購入。古い HDD のほうはパーティショニングに失敗して容量あっぷあっぷなので、OS ごと入れ直すことに。Dual とはいえ 366MHz なんで、make するのが大変だったから Slackware から Debian にする。時間があれば LFS もう一度やってもいいけど、さすがにそれはきついんで。
新 HDD が認識されないんでまず BIOS update から。後の install 作業は大して問題もなく終了。woody から sarge にし、pin で sid からいろいろ持ってきて大体は完了。
ってところで、bf2.4 だと SMP になってないんで、適当に SMP 有効にして make-kpkg。これが長いはまりの道へ。kernel を新しくして reboot 後、network が変。外に ping は通る。traceroute は駄目。http や ssh 等々はことごとく駄目。悩むこと 2 時間半、ある言葉がひらめいた。ECN。config-2.4.20-bf2.4 を見てみると、やはりあった CONFIG_INET_ECN=y が。cat /proc/sys/net/ipv4/tcp_ecn してみると 1。echo 0 > /proc/sys/net/ipv4/tcp_ecn してみると network 復活。AM1 時半から AM4 時までかかった。これでようやく眠れる。
むプラグインだいたい完成したので、実戦投入開始。旧むボットは引退。現在の TODO、
こんなところか。
他のプラグインでは、なると配りがバグってるっぽい。なるとを持っていないのにくれなかった。要検証。
いわゆるおみくじプラグインである auto random プラグインを作成開始。複数の答えを返せるようにしてみた。あと追加、削除機能をつければ完成。
squid の IPv6 対応作業って完全に停まってるのかな? 仕方ないので、Squid と www6to4 を利用した IPv6 対応 Web Cache の構築 を参考にして www6to4 を使ってみた。
新マシンというかパーツ類を衝動買い。
で、せっせと交換。
交換が終わったら、kernel 再構築。2.4.21 がもうすぐ出そうなんで、それまでは kernel 再構築はしないつもりだったんだけど。2.4.21-rc3 が出ていたのでそれを。ところが、何か調子が悪い(network が変、fb にゴミが出る等々)し、いろいろ patch 当たらなかった(usagi 等々)ので、おとなしく 2.4.20 に。2.4.20 を GCC 3.3 でコンパイルするといろいろ不都合が出る(reiserfs/super.c と net/core/rtnetlink.c の問題)が、適宜修正して通す。2.4.20 付属の e1000 だと OnBoard の NIC を認識しなかったので、Intel.com からドライバをもらってきてそれを試してみると、成功。
ptex-bin が
fmtutil: format `ptex' not available
といって postinst で失敗してくれる。これは以前 woody → sarge のときも発生していたんで、woody で hold していた。が、今回はこれを解決する方向で挑戦(upgrade ではなく新規に ptex-bin を入れるときも上記エラーで install できなかった。これも解決する方向で)
これで ok。実際はもっといろいろいじくったのだけれども。
# 今日記書いてる段階で気づいたんだが、もしかすると自分で設定してた環境変数の TEXINPUTS とかが悪さしてたんじゃないかという気がする。というかきっとそうだ、自分の TEXINPUTS の中は /usr/local/share ばっかりだし。su じゃなくて su - してやりゃよかったかな。
# てことで追試してみた。問題なく通った。これまでずーっと疑っててごめん > debian ptex-bin
また、独自のファイル群を /usr/share/texmf/ptex/KIP 以下にばらまいて mktexlsr。
/var/lib/texmf の存在を忘れていた。
gs(gs-esp) が全然だめという報告を受けたので、見てみる。「NimbusMonL-Regu」とかいろいろフォントが見つからないと出ている。ということで作業開始。
と、ここで、gs の設定ファイルをいじったかなーと思いつつ、/usr/share/ghostscript 以下を覗いてみると、
CMap -> /var/lib/defoma/gs.d/dirs/CMap
これだ。/etc/defoma に気付いたのは間違っていなかったようだ。/var/lib/defoma を /usr/variable/defoma に移し、NFSROOT で /var/lib/defoma -> /usr/variable/defoma するように変更。これによって gs 問題は解決。
ついでに昨日 /usr/tex/texmf になっていたのを /usr/variable/texmf に変更しておいた。
発言者の確認を忘れていただけだった。条件式を一つ追加して fix。
設定できなくした。本当は設定できたほうがいいかもしれないけど繁雑になるので一旦削除。
privmsg か notice か黙って仕事するか選べるようにした。
保管リストで順番がばらばらに出てくるので、ORDER BY dt_date を追加。
これとは別に、auto/oper でメッセージ中に nick を含められるようにした。
これを発生させていたのは nscd のようだ。lsof で見てみると、こいつが大量に接続しにいっていた。といっても nscd 自体が悪いのではなく、libnss_ldap か、さらに辿ってクライアント側の OpenLDAP のライブラリか。ということで、作業開始。
今のところ平和なようだが、果たしてどうなることやら。
家のマシンの kernel に ck パッチを当ててみる。
make mrproper sh /usr/src/kernel-patches/.../apply/... < ここでパッチ当てスクリプト実行 make oldconfig make-kpkg clean export CONCURRENCY_LEVEL=2 #smp make-kpkg --revision home.1 kernel_image make-kpkg --revision home.1 --added-modules alsa-driver nvidia-kernel-1.0.4349 modules_image
てな感じかな。
あと、deb パッケージを作るには、./debian/rules binary か。ふむふむ。
ck の効果の程は、もうちょっと使ってみて。
DONE。最新の id (正負は関係なし)を取ってきて、それの絶対値を +1 するという方式にした。ただ、まだ抜けがあるような気がしないでもない。
id が被っている問題は、pg_dump で dump しスクリプトで書き換えた。が、これだとあんまりうまくいかなかった。日付順にソートされていなかったので、id の順番がめちゃくちゃ。しょうがないので psql で
\f '\t' \o dump SELECT * FROM mu ORDER BY dt_date;
して出てきたものをスクリプトで書き換えた。
auto/random に項目の追加と削除機能を追加。
ちょっと入用で wu-ftpd パッケージの作り直し。
ドキュメントとか全然読んでないんで、間違ってる可能性高いんで話半分で。指摘歓迎。
前 | 2003年 5月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
[amd64 | audacious | comp | debian | gkrelluim | kip | misc | movie | research | rime | unicon | vdr | work | えふえふ]
書いてる人: dai
パッチ等(無保証)