2008年5月の小ネタ

Ubuntu 8.04, Firefox 3.0beta5 そして NetworkManager [id]

ThinkPad X300 に Ubuntu 8.04 をインストールして、それは快適に使っていたのだが、 いくつか不満もある。そのうちの一つが、NetworkManager が使いものにならない点。 僕の場合、自宅と職場で異なる静的IPを割り振っていたりするため、 NetworkManager を使ってそれをうまく設定することができず、 ifup/ifdown をいまだに使っている。それでネットワークの設定については一応解決しているんだけど、 一部 NetworkManager から情報を受け取っているアプリケーションが困るようで、 Firefox は起動時に NetworkManager が立ち上がっていないとオフラインモードになってしまうとか、 ちょっとした弊害が生じている。 (NetworkManager, dbus and Offline Status, Bug #191889 in network-manager (Ubuntu) を参照)

Linux デスクトップの世界でも、設計者の意図通りに使う分には楽だけどちょっと違う使い方をすると地獄、という図式が成立しつつあるなぁ。

2008.5.1

Mac をできれば使いたくない1つの理由 [id]

なんというかもう、UNIX での一般的な知識がまったく通用しないんだよね。

  • Mac OS X Server で、メーリングリストの設定を普通にサーバ管理ツールでやると設定が無茶苦茶。 で、Mailman 本来の設定画面やコマンドラインから設定しても、 サーバ管理ツールがまたそれを上書きする。
  • sshd が inetd 的ツール "launchd" から呼ばれているのに気がつかず、 待ち受けポートを増やすために sshd_config を書き換えてもまったく思い通りにならずハマる。 つーか sshd をそうやって起動するというのはどうよ。 起動時に sshd 上げたいんだけどどうすればいいんだ。
  • しかもその launchd の設定が plist でなされているのはいいんだけど、 plist の設計がとても場当たり的なので設定に苦しむ。ssh のポートは ssh.plist の /Sockets/Listeners/SockServiceName に <string>ssh</string> として設定されているんだけど、 そのすぐ近くの /Sockets/Listeners/Bonjour には <array> を使って複数の値が設定できるのに SockServiceName には複数の値が設定できない。なので複数ポートを開けようと思ったらもう一つ plist を加えないといけない。
  • まぁ、Developer Connection にある "Introduction to System Startup Programming Topics" か、launchd のソース読むか、Google なり何なりで調べればいいんだけど、 Tiger と Leopard ではえらく仕組みが変わっており、 ネット上には (Apple の公式文書や man にすら) 古い情報が混じってたりしていちいち信用ならない。ぜんぶ追いかけるのには労力が必要。
  • それらもまぁ、OS をじっくり使っていれば必ず直面する苦労ではある。 僕も UNIX に慣れる上で経験してきたことでもあり、 Mac OS X にどっぷりと浸る覚悟があれば苦にはならないんだろうけど、 「Mac OS X は UNIX に使いやすい GUI をかぶせたものなので、 必要とあらば UNIX に戻ればいいから、UNIX 使いにはお薦め」 というのは間違い。かなりの別物。

てな訳で、Mac OS X への深入りは今後は控えるつもり。もうへとへとです。

2008.5.9

libqrencode-3.0.1 リリース [id]

libqrencode のバージョン 3.0.1 をリリース。 PNG ファイルを保存するとき、fopen() でバイナリモードを指定していなかったので Windows だと正しく保存されない、というバグレポートがあったのでそれを修正したのだけど、 非 POSIX 環境でそのまま動いているとは知らなかった。

2008.5.9

それでもしつこく Mac OS X を深追いてしている1つの理由 [id]

タイトルを「〜いるn個の理由」にするとアクセスが増える、という神話は本当だったのか。

というヨタはさておき、今日も今日とて Mac OS X との格闘。あ、これ自宅で暇な時間にやってるんですからね。 今日のハマリは、user id 99番「_unknown」さん。USB 接続の外付け HDD (HFS+)上のファイルが、 どういう経緯を辿ってだかすべて _unknown さんの持ち物になっていた。 _unknown さんのファイルは驚いたことに、別のユーザがアクセスするとまるでそのユーザの所有しているファイルであるかのように振る舞う。つまり、こういうこと:

$ su
$ ls -l
drwxr-xr-x  2 _unknown  _unknown   68 May 13 01:37 hoge
$ su fukuchi
$ ls -l
drwxr-xr-x  2 fukuchi   fukuchi    68 May 13 01:37 hoge
$ su Guest
$ ls -l
drwxr-xr-x  2 Guest     _guest     68 May 13 01:37 hoge

もちろん、Finder から「情報を見る」を開いて GUI で確認しても同様。 普段は fukuchi でログインしているので二番目の表示しか目にしておらず、 他のユーザからは変更ができないようになっていると思い込んでいたのだが、 実は誰でも変更できる状態だったのだ。 うちの使い方だとその心配はないとはいえ、とても嫌な感じだ。 _unknown のファイルは自動的に誰でも読み書き自由、というのならともかく、 所有者を変えて見せかけるってのはひどい設計だ。

ただ問題は、いったいどうして _unknown になったのか、ということ。 実は外付け HDD 上のファイルは、Mac 本体の OS を Leopard にアップデート (しかも失敗してクリーンインストール) した際に本体の HDD から退避させてそのまま使っているものだ。ただし、 その HDD のパーティションを切り直して Timemachine 用の領域を作る際に、 いったんまた本体の HDD に移している。これは推測だが、 外付け HDD 上のファイルの owner uid が再インストールした環境には無く、 外付け HDD → 本体 HDD へコピーする時点でそうしたファイルは自動的に _unknown のものにされてしまったのではないだろうか。

とまぁ、なんだかんだで相変わらずへとへとになりながらも Mac OS X を使っているのは、

  • 居間に一台、常時稼動できるメディアサーバ的なものが欲しい
  • 外からアクセスできる常時稼動サーバが欲しい
  • でもうるさいのは嫌

という要求を、2年前に衝動買いした Mac mini がぴったりと解決してくれるから。 いや、ぴったりと解決してくれないから苦労している訳か。 まぁ、OS の変化による苦労は所詮ソフトの違い。かつて IRIX・Solaris・NetBSD といじってた時にはもっと絶望的にわからなかったので、 それに比べりゃまだマシな状況なのではありますが。

実のところ、上の三つの要求を満たす解としては、適当なキューブ型 PC や Mini-ITX のマシンでも作ればよかったような気もするのだが、 そうしなかったのはひとえに「Mac mini がもったいなかったから」。 これが真の「1つの理由」。

2008.5.13