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がないからってあきらめちゃいかんのね、この世界。
2000-06-25(日) [長年日記]
最近、ノイズが多いな、この日記。つーか、ノイズばっかし。
■ スポーツ観戦
熱烈なサポーターであるかみさんに連れられて、コンサドーレ札幌の試合を見に平塚まで行く。14:00キックオフの試合なのに、なぜか3時間も前に競技場に着くスケジュール。開門までにもまだ1時間あるという……。サポーターという人種のやることは理解できん。かみさんも、普段は行列なんて大嫌いのくせに、こういうときは平気らしい。試合はまぁ、エキシビションの少年サッカーや女子サッカーも含めてなかなか面白かったのだが、チケット代をけちってサポーター席にしてしまったのは大失敗。試合開始から前のヤツらは立ちっぱなしだわ、鳴り物と声援で耳がガンガンするほどうるさいわで、とても試合を観戦する状況ではない。
こないだ東京ドームのプロ野球で「球音を楽しむ日」と言って鳴り物応援禁止の日があったけど、ああいうのいいと思うんだよな。でもファンへのインタビューをTVでやってて、「応援した気がしない」とかぬかす若者がいてあきれた。サッカーのサポーターもそうだけど、どうも観戦よりも応援自体が目的化しちゃってるみたい。最近のコンサートもそうらしいよね。音楽を聴くよりも、騒いで踊るのが目的になっちゃってるから、1曲目から立ちっぱなしだとか。ジジイは体力的についていけん(笑)。
おれなんて、スポーツ観戦つったら、プロの技をじっくり観賞する機会だと思ってるから、むしろ騒ぐと気が散っていやなんだけど(もちろん良いプレイには拍手するけど)、そういうのは流行らないのだろう。勝っても負けても大騒ぎの、自己満足が時代の流れか。
そういえば、日本のPalmコミュニティには「一筆啓上運動」とか言って、フリーソフトウェアの作者にお礼のメールを書こうなんてムーブメントがあって、おれはかつて「勘弁してくれ」と言ったことがある。個人的にメール出してる暇があったら、他のことでコミュニティに貢献してもらった方がよっぽど嬉しいし、第一、お礼だけのメールを何本ももらったら、うるさいだけじゃん(笑)。でも、こういう意見は少数派らしい。いま受け入れられているのは、メールを出す方と受ける方の自己満足で完結してしまう、なんとも狭量な世界だ。こういうのって、コミュニティの可能性を狭める、ろくでもない方向性だと思うんだけどね。ジジイの愚痴かね。