2000-07-01(土) [長年日記]
■ P3
今日はS.P.C.の連中とアキバ巡礼。小田原とか沼津とかから車で来る連中が多いけど、相模原在住のおれは一人、電車で合流。今回の主目的はボーナス散財である……が、同僚の新婚カップルがPCを欲しがっていたので強制連行、勝手にパーツを見繕って自作させるという楽しい遊びも(笑)。
が、実はおれの本当の目的はアキバにはないのだー。実は今日、ホンダの二足歩行ロボットP3が、青山のショールームで一般公開されるというので、巡礼にかこつけて出てきたわけよ。デモンストレーションは13:00と15:00の2回だが、昼まで新婚さんをいじって遊んでいたので、昼メシを食ったあと同行希望者2名を加えて青山へ。そういえば、カブでは何度も行ってるけど、電車で行くのは初めてかも。
ウェルカムプラザのあるビルを、群衆が取り巻いてたらどうしよう……という予想はさすがに外れて、ビルの外は平穏そのもの。しかし、ビルの中はすでに人がいっぱいで、フロアの半分ほどを空けて作られたデモスペースが見えないくらい。ぐはぁ、20分も前に来たのに(←甘い)。ちなみに観客のデジカメ率高し。客層が伺い知れます。すでにデモ・キャラバン用のミニバンに正座(笑)して詰め込まれたP3が置いてあったりして、気分はいやが上にも盛り上がる。
開始15分前くらいから、「前の方は座れ」とか「お子様を前に出してあげて」とかアナウンスが入るようになる。そう、けっこう子供が多い。喜ばしい限りである。なんたって、アトムやガンダムを見て育った世代がP3を作ったのだ。P3を見て育った世代は、本物のアトムやガンダムを作れないはずがないではないか(笑)。それにしても最近の子供は、本当に動く二足歩行ロボットを見たり、あさりよしとおのマンガで科学の勉強をしたり、贅沢極まりないよな。まったく、うらやましいぜ。
そうこうしてる間にデモ開始。まずは車から下りてくるP3。電源が入っていないP3の関節はぐにゃぐにゃ。わざわざリモートで電源を入れると、急にしっかりして立ち上がる。「おおー」というどよめきが沸き上がる。すげぇぜ、本当に動いてる。
そのP3は車から下りて停止、実際のデモは別のドアから現れた別のP3で行われる。2台も用意するとは豪勢だ。P3は、本当に動いて、しかも、3段程度の階段昇降もしてくれた(本邦初公開)。階段のてっぺんでは手を振るわ、お姉さんと握手をするわ、去り際に会釈(新技?)までするというサービスぶりで、もう、こっちはウルウル。すごいよ、ホントに歩いてるよ。これ見ちゃったら、AIBOなんて話にならん。まるっきりおもちゃだよ(って、あっちは正真正銘のおもちゃだけど)。
たかだか15分程度のデモだったけど、余は満足じゃ。はぁ〜。実はP3の造形はあまり好きじゃなかったけど(P2の方が好き。プラモも持ってる)、実際に歩くと情が移るよねぇ。思わず限定キーホルダーまで買っちゃったよ。一生の思い出にするぜ。じゃなくて、チャンスがあったらまた見に来るぜ。男の子なら、一度は見ておかなきゃダメ。
2000-06-28(水) [長年日記]
■ Ruby 1.4.5
うっかりしていたらKondaraのsnapshotにRuby 1.4.5のパッケージが入っていたので、GETしてくる。とるものもとりあえず、突っ込みましょーっ♪
# rpm -Uvh ruby-1.4.5-2k.i586.rpm error: failed dependencies: libreadline.so.4.1 is needed by ruby-1.4.5-2k
■ おおぅ。なんでreadlineが。まぁいいや、これも新しいのを取ってきましょう。
# rpm -Uvh ruby-1.4.5-2k.i586.rpm readline-4.1-k4.i586.rpm error: failed dependencies: libhistory.so.3 is needed by postgresql-6.5.2-1k2 libhistory.so.3 is needed by postgresql-devel-6.5.2-1k2 libhistory.so.3 is needed by postgresql-server-6.5.2-1k2 libhistory.so.3 is needed by postgresql-tcl-6.5.2-1k2 libreadline.so.3 is needed by cdecl-2.5-9 libreadline.so.3 is needed by ftp-0.15-1k4 libreadline.so.3 is needed by git-4.3.17-5 libreadline.so.3 is needed by guile-1.3.2a-1 libreadline.so.3 is needed by postgresql-6.5.2-1k2 libreadline.so.3 is needed by postgresql-devel-6.5.2-1k2 libreadline.so.3 is needed by postgresql-server-6.5.2-1k2 libreadline.so.3 is needed by postgresql-tcl-6.5.2-1k2 libreadline.so.3 is needed by samba-client-2.0.6-5 libreadline.so.3 is needed by samba-common-2.0.6-5 libreadline.so.3 is needed by fvwm2-2.2.2-3k3 libreadline.so.3 is needed by librep-0.11-1k2 libreadline.so.3 is needed by samba-2.0.6-5 libreadline.so.3 is needed by sawmill-0.25.1-1k2 libreadline.so.3 is needed by bc-1.05a-4 libreadline.so.3 is needed by python-1.5.2-7k
■ うぎゃー。まぁ、readlineにいろいろ依存してるのはわかるけど、なんでGUIのfvwmとかsawfishまで。sambaなんてdaemonやないか。どうもダメな気がしてきたけど、念のためこいつらも持ってきて一緒に入れてみると、最後にはgnome-coreまで依存してるとか言ってくる。なんでRubyを入れ替えるためにGNOMEまで入れ替えなあかんねんっ。
……とここまで毒づいてから、「ひょっとして、自分でパッケージを作り直したらいいんじゃないか」と思いつく。なんたって、Kondaraの基本はnosrc.rpm
なんだから。もしそのSPECファイルにreadlineの特定のバージョンに依存する記述があったら、そこを直せばいいんじゃないの? そうだよ、それだ。Rubyのソースはすでに(用もないのに)入手済みだったので、ruby-1.4.5-2k.nosrc.rpm
を持ってきて、rpm -ivh
で展開。
■ ~/src/rpm/SPECS/ruby.spec
を見てみるが(KondaraのSPECファイルがこんなに複雑だとは知らなかった……)、別にreadlineのバージョンなんて書いてない。試しにビルドしてみるか。
$ rpm -bb ruby.spec (略) File not found: /var/tmp/ruby-1.4.5-root/usr/lib/ruby/1.4/i386-linux/curses.so File not found: /var/tmp/ruby-1.4.5-root/usr/lib/ruby/1.4/i386-linux/dbm.so File not found: /var/tmp/ruby-1.4.5-root/usr/lib/ruby/1.4/i386-linux/etc.so (略)
■ ありゃ。これは最後のインストールテストのフェーズかな? 確かにこんなディレクトリ(というかシンボリックリンク)はない。そもそもなんでi386なのか。Kondaraはi586なんじゃないのか。いや、もしかするとどっかで明示してやらないとi586にならないのかも……と思ってrpm
のman
を見てみると、--target
ってオプションがあった。これかな。ひょっとすると~/.rpmmacros
に指定できるのかも知れないけどよくわからん。これでリトライしてみよう。
$ rpm --target i586 -bb ruby.spec
■ すると、何も指定しなかった時には-O2 -m486
だったgcc
のオプションが、-O6 -mpentium
になってる。おお、これぞKondara神速の秘密か!?(笑) Warningもやたらと出るけど、これはたぶん、RubyのソースがANSIじゃないからなのかな。で、無事にビルドが終わり、ruby-1.4.5-k2.i586.rpm
が完成。ドキドキしながらアップデート。成功♪ readlineへの依存などなし。
つまりこういうことか。バイナリパッケージを作った人の環境がすでにreadline-4.*
を使っていたので、readlineを使っているRubyのパッケージはそれに依存してしまった(SPECファイルには無関係)。が、自分の環境でパッケージを作り直したことで、自分が使っているreadline-2.*
に依存したバイナリになった、と。なるほど、「ソースパッケージを持ってきて【自分の環境に合わせて】ビルドしなおしましょう」というのは、まさにこういう意味だったのだな。バイナリパッケージが公開されてない場合に自前ビルドをしたことはあったけど、本来の意味がやっとわかったぜ。src.rpm
万歳っ(笑)。
2000-06-26(月) [長年日記]
■ ntp
今日は懸案だったNTPによる時刻の自動設定に挑戦。けっこう時刻が狂っていることに気づいていたんだけど、手動で直すにもdate
コマンドの時刻指定のフォーマットがいつまでたっても覚えられないわ、ハードウェアクロックの設定をするコマンドhwclock
の名前も思い出せないわ(歳か?)。
まず、職場で使ってるマシンは、社内にNTPサーバーがあるのでそれを利用することに。KondaraのCD-ROMから、xntp3-5.93-13k1.i586.rpm
をインストールして、/etc/ntp.conf
のserverで始まっている行を書き換えて、社内NTPサーバーを指定する。以上。あとは/etc/rc.d/init.d/xntpd start
でdaemonを実行する。こいつの動作状況はntpq -p
でわかる。……と、これくらいはWWWで検索するだけですぐにわかるんだな。便利な時代だ。
問題は自宅の方で。ダイヤルアップルーターを使ったPPP接続なので、xntpd
を動かしておくわけにはいかない。ということは、適当な間隔でntpdate
を実行させてやることになる。cron
の出番ですな。ついでにKondaraのcron
がどうなってるのか見ておこう。
まず、rootになってcrontab -l
を実行すると、
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
■ これが、何もしないで設定されているcronだ。run-parts
ってのは/usr/bin
にあって、指定したディレクトリにあるファイルを次々に実行してくれるプログラムらしい。シェルスクリプトだから、見ればわかるってのはいいよな。つまり、/etc/cron.*/
にあるプログラムを、毎時01分、毎日4:02、毎週月曜4:22、毎月1日4:42に実行する。って、うちのマシンは毎日電源落としてるから、そんな時間に動いてないっつーの(笑)。
つーわけで、たいていInternetにつないでいる23:00前後にdailyが走るようにcrontab -e
で変更。あとは、職場マシンと同様にxntp3
のパッケージを入れてから、時刻合わせをするスクリプトを作ってcron.daily
に入れればいい。ま、こんな感じか:
#!/bin/sh /usr/sbin/ntpdate clock.nc.fukuoka-u.ac.jp >> /var/log/settime /sbin/hwclock --systohc
■ これ書いてると、hwclock
はclock
って名前にリンクされてることを今ごろ知ったりして、こんな名前と知ってたら覚えるのに苦労しなかったのに……ぐぅ。そうこうしてる間に23:02になった。ちゃんと動いているもよう。今日はトラブルありませんでしたな。なんかコツをつかんできた感じがするぜ。ふふふ。
しかし、Webで情報探してたら、AMラジオの時報で時刻合わせをするページなんてのが引っかかったりして、面白い世界だなぁ。GPSがないからってあきらめちゃいかんのね、この世界。