2007-03-25

Firefox on Solaris(11/06)

いろいろと不便なのでFirefox.
getfirefoxからfirefox-2.0.0.3.en-US.solaris10-i386-pkg.bz2を入手、sudo /usr/sbin/pkgadd -d ./firefox-2.0.0.3.en-US.solaris10-i386-pkgしただけ。

これで、/opt/sfw/bin以下にインストールされる。

ランチャーを作成する際のアイコンは/opt/sfw/lib/firefox/iconsの中。

2007-03-24

launchdの研究

Mac OS X 10.4から導入されたLaunchd、BINDの起動設定をする前にいろいろとつついてみることにする。

まず、lanunchctlの動作から。

管理ユーザmeでlaunchctl listを実行。

$ launchctl list
$
どうやら、ユーザmeは管理権限はあるけれどもrootではないので、あくまでmeのリストを見るようだ。
気を取り直して
$ sudo launchctl list
Password:
com.apple.dashboard.advisory.fetch
com.apple.KernelEventAgent
com.apple.mDNSResponder
com.apple.nibindd
com.apple.periodic-daily
com.apple.periodic-monthly
com.apple.periodic-weekly
com.apple.portmap
com.apple.syslogd
com.vix.cron
org.postfix.master
org.xinetd.xinetd
com.openssh.sshd
まだBIND(org.isc.named.plist)は読み込まれていない。
ここでlaunchctl startをかけるとどうなるか。
$ sudo launchctl start org.isc.named
launchctl start error: No such process
loadしていないデーモンはstartなどの操作を受け付けないようだ。
次に、namedが起動しない(設定ファイルに不備がある)状態でlaunchdに登録してみる。
#loadサブコマンドの -w は、loadの際に設定ファイルのdisabledキーをfalseに変更して上書きするオプション
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
$ sudo launchctl list
com.apple.dashboard.advisory.fetch
(略)
org.isc.named

loadした時点で、すぐに起動を試みるようだ。おそらく、org.isc.named.plistの定義で<key>OnDemand<key>が<false/>だからだろう。
以下、ログ。
/var/log/system.log:
Mar 24 21:27:56 pba sudo: localadmin : TTY=ttyp0 ; PWD=/Users/me ; USER=root ; COMMAND=/bin/launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
Mar 24 21:27:57 pba named[227]: starting BIND 9.3.2 -f
Mar 24 21:27:57 pba named[227]: /private/etc/named.conf:4: open: /etc/rndc.key: file not found
Mar 24 21:27:57 pba named[227]: loading configuration: file not found
Mar 24 21:27:57 pba named[227]: exiting (due to fatal error)
Mar 24 21:27:57 pba launchd: org.isc.named: exited with exit code: 1
Mar 24 21:27:57 pba launchd: org.isc.named: respawning too quickly! throttling
Mar 24 21:27:57 pba launchd: org.isc.named: 9 more failures without living at least 60 seconds will cause job removal
Mar 24 21:27:57 pba launchd: org.isc.named: will restart in 10 seconds
Mar 24 21:28:07 pba named[228]: starting BIND 9.3.2 -f
[snip]
Mar 24 21:29:17 pba launchd: org.isc.named: 1 more failure without living at least 60 seconds will cause job removal
Mar 24 21:29:17 pba launchd: org.isc.named: will restart in 10 seconds
Mar 24 21:29:27 pba named[237]: starting BIND 9.3.2 -f
Mar 24 21:29:27 pba named[237]: /private/etc/named.conf:4: open: /etc/rndc.key: file not found
Mar 24 21:29:27 pba named[237]: loading configuration: file not found
Mar 24 21:29:27 pba named[237]: exiting (due to fatal error)
Mar 24 21:29:27 pba launchd: org.isc.named: exited with exit code: 1
Mar 24 21:29:27 pba launchd: org.isc.named: respawning too quickly! throttling
Mar 24 21:29:27 pba launchd: org.isc.named: too many failures in succession

console.logはnamedのログのみ。
/Library/Logs/console/501/console.log:
Mar 24 21:27:57 pba named[227]: /private/etc/named.conf:4: open: /etc/rndc.key: file not found
Mar 24 21:27:57 pba named[227]: loading configuration: file not found
Mar 24 21:27:57 pba named[227]: exiting (due to fatal error)
[snip:あと9回繰り返し]
Mar 24 21:29:27 pba named[237]: exiting (due to fatal error)
10秒おきにリトライして10回失敗したらあきらめる様子。

このままでは不安なのでunload。が、予想外の反応が。
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist
No such process(unloadしようにも、そんなのloadされてないね。)
sudo launchctl listしても、org.isc.named.plistの姿はない。
ファイル"/System/Library/LaunchDaemons/org.isc.named.plist"のDisalbeキーもtrueに書き戻されている。
どうやら10回挑戦してだめだった場合、自動的に"unload -w"されるようだ。

要するに


launchctl loadlaunchdへの登録。plistのDisabledがtrueであるならば、-wオプションをつけることでfalseに書き換えてくれる。
launchctl [ start | stop ]loadされているデーモンを開始/終了ただし、stopしても要求があれば起動する
launchctl unloadlaunchdへの登録削除。-wオプションはloadサブコマンドの際の逆。次の再起動かloadが行われるまで停止するなら -w 無しで、完全に無効にするなら -w をつけるという感じか。
launchctl listloadされているデーモンの一覧

という使い方らしい。(自信無し)

BIND on Mac OS X 10.4.9

synergyを設定するのにやっぱり設定ファイルは名前で書きたいわな、ということで急遽BINDをセットアップする。

何のために入っているのかわからないけれども、クライアント版のOS XにもBINDが入っている。便利じゃないか。ありがとう。
とりあえず/etc/named.confを眺めてみると、まんまデフォルトのようだ。
named-checkconfする。
$ named-checkconf
/private/etc/named.conf:4: open: /etc/rndc.key: file not found
引っかかったのは次の行
include "/etc/rndc.key";
lsで確認。
$ ls /etc/rndc.key
ls: /etc/rndc.key: No such file or directory(そんなファイルは知らん)
まさか同じ鍵を配る訳にもいかないから、自分で作れ、ということだね。
一応、無理を承知で立ち上げてみる。

Mac OS X 10.4 からlaunchdというしくみが導入されたらしい。
initとcronとinetdを足した感じのしくみ。
で、そのインタフェースがlaunchctl、redhatのchkconfigみたいなもんだろうか?

起動のさせ方などは、launchdの研究のほうで詳しく書くとして、
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist

当然、失敗。
/var/log/system.log
Mar 24 21:27:57 pba named[227]: starting BIND 9.3.2 -f
Mar 24 21:27:57 pba named[227]: /private/etc/named.conf:4: open: /etc/rndc.key: file not found
Mar 24 21:27:57 pba named[227]: loading configuration: file not found
Mar 24 21:27:57 pba named[227]: exiting (due to fatal error)

まぁ、当然の結果。
named.confのrndc関連を削ってもよいのだけど、なるべくデフォルトの設定を残す、ということで、rndc.keyファイルを作成する。

$ sudo rndc-confgen -a
wrote key file "/private/etc/rndc.key"
再度、named-chickconf、エラーが出ないことを確認する。
とりあえずこの設定で起動し、基本的な動作確認をして、すぐ停止させる。
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
$ dig @127.0.0.1 blogger.com a

; <<>> DiG 9.3.2 <<>> @127.0.0.1 blogger.com a
[~snip~]
;; ANSWER SECTION:
blogger.com. 3600 IN A 66.102.15.100
[~snip]
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist
あとは、普通にゾーンを定義して、対応するファイルを作成する。

チェックを行って、起動。(ゾーン名などは例として。)

$ sudo named-checkconf
Password:
$ cd /var/named
$ named-checkzone lan.example.com db.lan.example.com.master
zone lan.example.com/IN: loaded serial 2007032400
OK
$ named-checkzone 0.168.192.in-addr.arpa rev.192.168.0.master
zone 0.168.192.in-addr.arpa/IN: loaded serial 2007032400
OK
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist


名前引きの確認を行った後、念のため再起動して、サービスが稼働しているか確認して終了。各クライアントのリゾルバを新しいDNSへと書き換える。

一から出直し(synergyのセットアップ[1])

自宅の環境を再構築。

とりあえずsynergyから。今回は、Mac OS XがサーバでSolarisがクライアントとする。

Macintosh (10.4.9):
synergy-1.3.1-1.OSX.tar.gzをダウンロードして展開。
できたフォルダを好きなところへ置け、とのことなので
/usr/localを作成してそこへmv。

/usr/local/synergy-1.3.1/synergy.confを編集、というところでDNSがまだなのに気づき中断。
BINDの設定をやってから再開。
配布パッケージ内のsynergy.confはsynergy.conf.sampleとリネームして新規に書き起こすことにした。
/usr/local/synergy-1.3.1/synergy.conf
$ cat synergy.conf
section: screens
host-a: #Macのホスト名
host-b: #Solarisのホスト名
end
section: links
host-a:
left = host-b
host-b:
right = host-a
end


Solaris 10 (11/06):
synergyのサイトからsynergy-1.3.1.tar.gzをダウンロード。/usr/local/srcあたりに置いて展開。

/usr/sfw/bin/と/usr/ccs/binがパスに入っていれば、次のようにビルドできる。
$./configure --x-includes=/usr/openwin/include --x-libraries=/usr/openwin/lib
$make
$sudo make install

起動確認:
Mac側で $ sudo /usr/local/synergy-1.3.1/synergys -f --config /usr/local/synergy-1.3.1/synergy.confで立ち上げる。が、次のようなエラーが。

INFO: Synergy server 1.3.1 on Darwin 8.9.1 Darwin Kernel Version 8.9.1: Thu Feb 22 20:55:00 PST 2007; root:xnu-792.18.15~1/RELEASE_I386 i386
FATAL: unknown screen name `host-a.lan.example.com'


どうやら、screen名は、hostnameコマンドが返す値と「全く」同一でなければならないらしい。他と違って、Mac OSのhostnameは単純なホスト名ではなく、FQDN名を返すため、受け付けてくれなかったらしい。
次のような記述をsynergy.confに追加して回避した。
section: aliases
host-a:
host-a.lan.example.com
end
これで、サーバの方は起動できるようになった。クライアントからの接続をテストする。
Mac(server):
$ sudo /usr/local/synergy-1.3.1/synergys -f --config /usr/local/synergy-1.3.1/synergy.conf
INFO: Synergy server 1.3.1 on Darwin 8.9.1 Darwin Kernel Version 8.9.1: Thu Feb 22 20:55:00 PST 2007; root:xnu-792.18.15~1/RELEASE_I386 i386
WARNING: could not map hotkey id=ef14 mask=0000
NOTE: started server
INFO: screen "host-a" shape changed
NOTE: accepted client connection
NOTE: client "host-b" has connected


Solaris(client):
$/usr/local/bin/synergyc -f host-a
INFO: synergyc.cpp,716: Synergy client 1.3.1 on Unix
DEBUG: CXWindowsScreen.cpp,840: XOpenDisplay(":0.0")
DEBUG: CXWindowsScreenSaver.cpp,339: xscreensaver window: 0x01600001
DEBUG: CXWindowsScreen.cpp,110: screen shape: 0,0 1280x1024
DEBUG: CXWindowsScreen.cpp,111: window is 0x04600004
DEBUG: CScreen.cpp,38: opened display
NOTE: synergyc.cpp,330: started client
DEBUG: CXWindowsClipboard.cpp,313: open clipboard 0
[~snip~]
NOTE: synergyc.cpp,247: connected to server
とりあえずこれでMac側のキーボード、マウスでSolaris側も操作できることを確認。
Solaris使用時にaltがキーボードのcommandキーに割り付けられることと、MacでコピーしたテキストがSolaris側のFirefoxに直接ペーストできないこと以外は特に問題なし。

常時起動する設定とキーマップの問題は後で何とかするとして、とりあえずこれで終了。