c/fe

http://d.hatena.ne.jp/uzulla から移行しました。

Macはブラックボックスか

http://d.hatena.ne.jp/mirakui/20081016/1224179024

そんなことはない、と思う。すくなくともWindows Vistaよりはw
Vistaの変なリンクはりまくりっぷりは異常)

ファイルシステム

MacUNIX系とはいえ、全くディレクトリの構造が違うので気になる所だが、実際にはUNIXMacを混ぜたが故の構造になっている。


/ はこんな風になっている

Mac(Next)っぽい
Applications
Developer
Library
Network
System
Users
Volumes
private
net

Unixっぽい
bin
cores
dev
etc
home
opt
sbin
tmp
usr
var

こうやってみると下半分は途端に親しみがもてないか?
大体想像したとおりの物が下半分には入ってる。

プロセス

次にpstreeをたたいてみる。
長いので割愛するが、Linuxで言うところのinitdぽい位置にいるlaunchdからすべてのツリーが生えている。そんでもって巨大な枝をもったlaunchdがみあたらないだろうか、この下にGUIな感じで起動しているアプリがぶら下がっている。
その部分をよけつつ見ると、なんとなく普通のUNIXぽくなっているのが解るのではなかろうか。
勿論見慣れないデーモンが山ほどあるが、一つ一つ見てみるとなんとなく何をやっているのかはわかりそうな物ばかり。
むしろ最近の、やまほどプロセス(orスレッド)ができるLinuxよりはよっぽど目に優しい気がする。

ブートアップ

launchdがinitdにあたる事は上で説明した通りだが。じゃあinit.dにあたるものはどこにあるのか。
それは /System/Library/LaunchDaemons/ 。

みなれた物で、簡単そうな奴なら
cat /System/Library/LaunchDaemons/com.apple.nfsd.plist
辺りを見てみると良いのではないか?

ネットワークサービス、inetd

実はlaunchdはinetdの働きもする。
ls /System/Library/LaunchAgents/
してみると諸々のネットワークデーモンがいる事が解る。
プロセスが比較的すっきりしているのも、これのおかげなんだろう。

.plist は XMLなのは何故か

多分、GUIから編集する事が前提なので、ini形式は厳格にできないので破綻する、という事なのだろう。
基本OSXXMLファイルの設定の固まりなのだ。

ちなみに、普通のアプリケーションの設定は~/Libraryに入っている。
つまり設定ファイル>Unix的:etc Mac的:Library


ちなみに、Libraryは設定ファイルの他にいわゆるlib的なファイルも入っている。
そういうのを「用途別に」ばらばらの場所に置かずに、「アプリ別に」おいているというのがMac流なんだろう。

ほら、何となく見えてくる。

ブートと設定を保存している仕組みがわかればなんとなくみえてきません?

オマケ、ちょっとおおっと思えるディレクト

ls -al /System/Library/Frameworks/JavaVM.framework/Versions/
ls -al /System/Library/Frameworks/Ruby.framework/Versions

こういう綺麗さというか、まあこれもいわば約束事でしかないんだが、いいですね。
(逆に余計に複雑にしてる!という話もあるにはあるが)


まー、すぐにMacportsとかで最新のPerlとか入れだしてグズグズになっちまうんだけどなwww