トップ 最新 追記
RSS feed

ただのにっき


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にならないのかも……と思ってrpmmanを見てみると、--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

これ書いてると、hwclockclockって名前にリンクされてることを今ごろ知ったりして、こんな名前と知ってたら覚えるのに苦労しなかったのに……ぐぅ。そうこうしてる間に23:02になった。ちゃんと動いているもよう。今日はトラブルありませんでしたな。なんかコツをつかんできた感じがするぜ。ふふふ。

しかし、Webで情報探してたら、AMラジオの時報で時刻合わせをするページなんてのが引っかかったりして、面白い世界だなぁ。GPSがないからってあきらめちゃいかんのね、この世界。


トップ 最新 追記
RSS feed