shiden.com



shiden.com blog


Macの最近のブログ記事

Mac OSでsyslogを受ける

ネットワーク機器からのsyslogをMac OS Xで受け付ける方法のメモ。

> sudo vi /System/Library/LaunchDaemons/com.apple.syslogd.plist

syslogdのサービス定義XML(?)を編集する。 外部ホストからのsyslogを受け付けるのは,ファイル下の方にある <!-- Un-comment the following lines to enable the network syslog protocol listener. -->" とかかれている場所のコメントアウトを外せばよい。
ぐぐると起動コマンドに"-u"を加える方法もあるが,こちらは以前(10.4まで?)の方法で,Leopard(10.5)ではうまく動かない。

編集が終わったら,以下のコマンドでsyslogdのサービスを読み込み直す。

> sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
> sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

これで,514/UDPでサービスを受け付けるようになり,外部ホストからのsyslogも受け付ける。 あとは必要に応じて /etc/syslog.conf を編集し,ファシリティと出力先ファイルの対応を変えればよい。

wgetの代わり

Mac OS Xにwgetないかなぁ,と調べていたらcurl(/usr/bin/curl)というコマンドがあることが判明。 これを使えばわざわざwgetをビルド/インストールする必要ないじゃん。 使い方はhelpを見れば書いてあるけど,wgetとたいして変わらない。

ちなみに,curlというとリッチクライアントのcurlを思い出すけど,こちらは"Client for URL"という意味。 "カール"ではなく"シー,ユーアールエル"と呼ぶらしい。

Macでのサービス制御

 以前,DNSサーバでもちょこっと触れたけど,Mac OS X Leopard(10.5)のサービス制御はlaunchdなるものを使っている。あのあとPostgreSQLやSubversionを入れたのでこいつらのデーモンをOS起動と同時に動くよう設定することにした。

 サービス制御を行う場合,/Library/LaunchDaemons/ ディレクトリ以下にサービス制御を行うXMLファイルを書いてlaunchdに読み込ませればよい(OSが標準で定義するものは /System/Library/LaunchDaemons/ となるがこちらは原則変えない)。
 OSが標準で定義するXMLを参考に,手元のPostgreSQLの場合,次のようにした。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>GroupName</key>
    <string>pgsql</string>
    <key>Label</key>
    <string>jp.shiden.PostgreSQL</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/pgsql/bin/postgres</string>
        <string>-D</string>
        <string>/service/database</string>
        <string>-i</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/dev/null</string>
    <key>StandardOutPath</key>
    <string>/dev/null</string>
    <key>UserName</key>
    <string>pgsql</string>
</dict>
</plist>

 この定義の場合,意味はおおむね次のかんじ。

  • サービス名称を"jp.shiden.PostgreSQL" とする(これは一意であればよいのでテキトー)
  • 起動ユーザ,グループを pgsql:pgsql とする
  • コマンドを "/usr/local/pgsql/bin/postgres -D /Users/pgsql/database -i" とする
  • 標準出力,エラーをいずれも /dev/null とする
  • launchctlでのロード時に起動までおこなう

 ちなみに,この設定ファイルを書くに当たってはまったのは次の2点。

  • pg_ctlで起動した場合,処理終了後pg_ctlプロセス自体はlaunchctlでエラーになってしまう
    (だからpostgresで起動するようにした)
  • OnDemandをfalseにしないと,自動起動しない
    (必要に応じてlaunchctl start ... で起動するという意味になってしまうから)

 とまぁ,試行錯誤(結構時間食った)を経て,無事必要なサービスが自動起動するようになりましたとさ。これでちょっとは使い勝手がよくなったかな。

DNSサーバ

 自宅サーバであるMac MiniでDNSサーバを再構築。

 named.confだのゾーンファイルだのについては後で余裕があれば記載するが,とりあえずMac OS 10.5 (Leopard)でのブート時の自動起動設定方法だけ備忘録としてメモ。ちなみに以下の情報のソースはここ

> sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist

 /System/Library/LaunchDaemons以下にあるXMLを見てブート時の振る舞いを制御しているのか。なるほど。
 しかし,前に使っていた10.3(Panther)とだいぶ違うねぇ......。こうもバージョンによって扱いが頻繁に変わると使う方は困るなぁ。

Mac OS 10.5(Leopard)でのグループ/ユーザー登録

 以前(10.4 Tigerまで)はnetinfoがあったが,dsclというコマンドベースに置き換わったとのこと。
 Mac OS 10.5 LeopardでPostgreSQLを導入するときに,サービス用のグループとユーザーを登録するときのコマンド履歴をメモとして残しておく。

> dscl -u [ユーザ名]
> Password: [パスワード]
dscl> -create /Groups/_pgsql
dscl> -append /Groups/_pgsql RecordName pgsql
dscl> -append /Groups/_pgsql PrimaryGroupID 301
dscl> -append /Groups/_pgsql RealName "PostgreSQL Users"
dscl> -create /Users/_pgsql
dscl> -append /Users/_pgsql RecordName pgsql
dscl> -append /Users/_pgsql UniqueID 301
dscl> -append /Users/_pgsql PrimaryGroupID 301
dscl> -append /Users/_pgsql Password '*'
dscl> -append /Users/_pgsql RealName "PostgreSQL Server"
dscl> -append /Users/_pgsql NFSHomeDirectory /Users/pgsql
dscl> -append /Users/_pgsql UserShell /bin/bash
dscl> q
>

 ちなみに既存のサービス用ユーザー情報に従い,ユーザー名の頭に'_'を入れてみた。でも意図は分からない。

Mac mini アップグレード

 自宅で使っているMac mini(Mac OS 10.3)で対応しないソフトウェアが増えてきた。Safariも1.x止まりだし,Firefoxもバージョン3は対応しないしで,これらを使用するには10.4(Tiger)以降へのバージョンアップが必要となる。
 で,折角だからOSのバージョンアップを検討。で,折角OSを換えるのだから,ケースを開けて各種パーツもできる範囲でアップグレードしてみようと試みる。古いパーツは十分値段も安いし,そろそろ手に入らなくなってくるので。かつ,ハードはもはや保証期間切れなので,ケース(というか殻)を開けてみたくなったので。

 購入したのは以下のハードウェア/ソフトウェア

  • HDD: HGST HTS541616J9AT00 (160G 5400RPM) 6280円也
    (これまではToshiba 80G 4300RPM)
  • メモリ: Trancend 1GB DDR-PC3200 3480円也
    (いままではMicron 512MB DDR-PC3200)
  • 光学ドライブ: Sony NEC Optiarc AD-7630A (DVDスーパーマルチドライブ) 6980円也
    (いままではMatsushitaのDVD/CDコンボドライブ)
  • OS: Mac OS 10.5 Leopard 14800円也
    (いままではMac OS 10.3 Panther)

 で,Mac Mini開けて折角必死に換装したらDVDスーパードライブがMac OS 10.3だとライティングに対応していない......。なにも考えずにお手頃価格のを買ったのが悪かったか。しかもドライブが歪みやすいためか,うるさいし。

 まぁ,OSまで換装してなんとか使える状態になってきたが,結構手間がかかったなぁ。費用も(特にOS......)結構かかったし。
 でも,せっかく貴重(?)なPowerPCのMacがあってスピードも困っていないのだから使い倒さないとね。