Beginning OS X 10.4/インフラ整備編

出典: Beginning OS X

Beginning OS X 10.4 > インフラ整備編

目次

[編集] OS X のインストール

OS X のクリーンインストールをおこなうには、OS X のインストールディスクを挿入して C を押しながらブートする。インストーラが起動するので、パーティションを編集するなどしたのち、インストーラの指示に従って作業をおこなう。

Mac OS X 10.4 Tiger を旧環境に上書きインストールするのは極力避けたほうがよいが、もしそうしたいのであれば、既存の MacPorts を事前にアンインストールしておくこと。また、MacPorts 以外のパッケージシステムを利用していたのなら、それらもアンインストールしておくのがよい。パッケージシステムの混用は推奨されない。OS のインストール後には /etc/shells の内容が初期状態に戻されるので、シェルを標準以外のものに変更している場合には元に戻しておくのを忘れないように。さもなくばシェルログインができなくなる

ソフトウェア・アップデートも忘れずに実施し、常に最新の状態に保つこと。

[編集] 基本的なデーモン

[編集] ntpd

メニューバーの右にある時計表示をクリックするか、「システム環境設定」の中から選択し、「日付と時刻」のウインドウを開く。

この中に「日付と時刻を自動的に設定」のチェックボックスが見つかるので、これをチェック。以上で ntpd が立ち上がる。(デフォルトでチェックが入っていることもある)

サイトで独自に NTP サーバを立ち上げている場合には、サーバ名の欄を適当なものに書き換える。NTP サーバが複数ある場合には、スペースで区切って書き入れること。

NTP サーバとの同期に関する状況は「ntpq -pn」で確認することができる。

[編集] sshd

sshd を立ち上げる必要があれば、「システム環境設定」の中から「共有」のアイコンをクリックし、「リモートログイン サービス」を有効にする。

[編集] X11 と Xcode

[編集] X11.app

OS X 10.4 のインストールディスク内には X11 for Mac OS X 1.1 が含まれるので、それを利用してインストールをおこなう。(「Optional Installs」パッケージの中に含まれており、少々見つけづらいかも知れない。)

バージョン 1.1 の導入後にソフトウェア・アップデートを実施することで、バージョン 1.1.3 へと更新することができる。

[編集] Xcode 2

アップルのサイトから「Xcode 2.5」を入手してインストール。入手するには ADC への登録 (無料) が必要。

インストールするコンポーネントはデフォルトのままで構わない。

[編集] 基本的なソフトウェア

[編集] Terminal.app

Terminal.app を起動後、メニューより「ターミナル」→「ウインドウ設定」を開き、以下の設定をおこなうと便利に使える。

  • シェル
    • シェルの終了時:ウインドウを閉じる。
  • エミュレーション
    • 「非 ASCII 文字をエスケープ」をクリア。(これをクリアしておかないと、たとえば Emacs 内で日本語が入力・ペーストできない問題が生じる。)
  • ディスプレイ
    • フォントはデフォルトの「等幅 Monaco レギュラー 10」から無闇に変えないほうが無難。(フォントサイズの変更程度ならば問題はないが、フェイスを入れ替えると記号類のグリフの桁処理がおかしくなる場合がある。)
    • 小さなサイズの文字が読み難ければ、「アンチエイリアス処理を行う」にチェックを入れてみるのもよい。
    • 「ワイドグリフは 2 桁とカウントする」をチェック。
    • 文字セットエンコーディング:Unicode (UTF-8) であることを確認。
  • キーボード
    • 以下の文字列をシェルへ送信する
      • end : CONTROL+OPTION+[ [ F    ←3文字
      • home : CONTROL+OPTION+[ [ H
      • page down : CONTROL+OPTION+[ [ 6 ~    ←4文字
      • page up : CONTROL+OPTION+[ [ 5 ~
    • Delete 押下時にはデフォルトで \e[3~ のエスケープシーケンスが送出される。このシーケンスが使えないホストに対して頻繁にログインするような場合 (かつ、ホスト側の設定で吸収しきれない場合) には、「Delete キーで backspace を送信」をチェックしておくと Ctrl-H が代わりに送られるようになる。

最後に「設定をデフォルトとして使用」をクリック。

日本語入力について

この段階では、まだシェル上から日本語が正常に入力できないかもしれないが、心配しなくとも良い。

シェル上で UTF-8 エンコードの日本語を扱うには、後ほど説明する bash 3 のインストールと設定が必要となるため、気にせず以降の環境変数の設定まで読み進めること。

一部文字のグリフ幅がおかしい?

OS X 10.4 の Terminal.app では、○ や β の 文字が、表示上はワイドグリフであるにも関わらず、実際には半角として扱われてしまうようだ。そのためか、emacs 上でのテキスト編集時に不可解な動作を引き起こしてしまう問題が見受けられる。

こうした文字をターミナル上で扱いたい場合には、Terminal.app の代わりに uxterm や rxvt-unicode を用いるようにするか、あるいは、これらの文字が含まれるドキュメントを編集したいのであれば、Carbon Emacs パッケージなどのエディタを別途用いたほうがよいかもしれない。

[編集] MacPorts

MacPorts のサイトから最新のソースを入手し、ビルドする。

$ cd
$ curl -O http://svn.macports.org/repository/macports/downloads/MacPorts-1.6.0/MacPorts-1.6.0.tar.bz2
$ tar xvfj MacPorts-1.6.0.tar.bz2
$ cd MacPorts-1.6.0/
$ ./configure
$ make
$ sudo make install

生成されたバイナリは /opt ディレクトリ配下にインストールされる。

MacPorts のインストール後には環境変数 PATH を一時的に書き換え、port コマンドを扱えるようにする。

$ export PATH=/opt/local/bin:$PATH
$ export MANPATH=/opt/local/share/man:$MANPATH

最後に、以下のコマンドを入力して MacPorts 本体および ports のデータベースを最新の状態に更新する。(-d はデバッグ出力を表示させるためのオプション)

$ sudo port -d selfupdate

[編集] libiconv

MacPorts では libiconv を cp932fix 付きで導入することができる。(オプション)

$ sudo port install libiconv +enable_cp932fix

[編集] bash

シェル上で Unicode 文字列を正しく扱うためには、readline 5.0 に対応した bash 3.0 以上が必要となる。

OS X 10.4 に標準で用意されている bash のバージョンは 2.05b なので、別途 bash 3 をインストールする必要がある。

$ sudo port install bash

(初回インストール時には expat, ncursesw, ncurses, gettext もビルドされるため、旧型の Mac では時間がかかり、退屈 or 心配になってくるかもしれない。そんなときには -v オプションを併用すると多少は気休めになるだろう。)

bash を実際に用いるにあたっては、.bashrc, .bash_profile の設定が必要となる。

[編集] emacs

OS X 10.4 には標準で Emacs 21.2 がインストールされているが、よりよい Unicode サポートのため、別途 Emacs 22 を導入する。

$ sudo port install emacs

Emacs を実際に用いるにあたっては、.emacs の設定が必要となる。

[編集] ls

OS X 10.4 Tiger 標準の ls は、そのままでは ASCII 以外の文字コードを通してくれない。-w オプションを指定すると通してくれるようになるので、デフォルトで -w オプションが指定されるように細工する。

$ sudo mkdir -p /usr/local/bin
[/usr/local/bin/ls]
#!/bin/sh
/bin/ls -w "$@"
$ sudo chmod 755 /usr/local/bin/ls

Tips: UTF-8 Normalization Form C での出力

先の設定では、ls の結果は UTF-8 Normalization Form D で出力される。

これを UTF-8 Normalization Form C で受け取りたい場合には、続けて OS X 純正の iconv を介し、以下のようにするとよい。

[/usr/local/bin/ls]
#!/bin/sh
/bin/ls -w "$@" | /usr/bin/iconv -f UTF-8-MAC -t UTF-8

[編集] X11 環境の整備

[編集] freetype

MacPorts では freetype を bytecode interpreter 付きで導入することができる。(オプション)

$ sudo port install freetype +bytecode
  • Note that there are important patent issues related to the use of the interpreter.

[編集] kinput2.macim

日本語インプットメソッドとして kinput2.macim を導入する。

$ sudo port install kinput2-macim

kinput2.macim を用いて実際に日本語を入力するには、environment.plist.xinitrc の設定が必要。

[編集] 基本的な設定ファイル

[編集] environment.plist

OS X ではユーザがログインした際に設定される環境変数を ~/.MacOSX/environment.plist 中に記述しておくことができる。

以下のようにして XMODIFIERS と LANG が適切に設定されるよう、plist ファイルを作成しておくとよい。

$ mkdir ~/.MacOSX
[~/.MacOSX/environment.plist]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>LANG</key>
    <string>ja_JP.UTF-8</string>
    <key>XMODIFIERS</key>
    <string>@im=kinput2.macim</string>
</dict>
</plist>

environment.plist はユーザがデスクトップにログインした際、ログインシェルを起動する前に読み込まれる。リモートからの SSH ログイン時には読まれない。

再ログインすると設定が反映されているはずなので、次に進む前に正しく設定されているかどうかを確認しておくこと。

$ export
...
declare -x LANG="ja_JP.UTF-8"
...
declare -x XMODIFIERS="@im=kinput2"
...

参考: Technical Q&A QA1067 Setting environment variables for user processes

[編集] .bashrc

[~/.bashrc]
# If not running interactively, don't do anything
test -z "$PS1" && return

# Make bash check it's window size after a process completes
shopt -s checkwinsize

PS1='\u@\h\$ '

test -x /opt/local/bin/lv && alias less=/opt/local/bin/lv

(ブラウザからのコピー&ペーストの際、「\」の字が化けることがあるので注意。)

[編集] .bash_profile

[~/.bash_profile]
#umask 22

#ulimit -c unlimited
#ulimit -d unlimited
#ulimit -s 65536
#ulimit -u 532
#ulimit -n 10240

LANG=ja_JP.UTF-8; export LANG

PATH="/usr/bin:/usr/sbin:/bin:/sbin"
MANPATH="/usr/share/man"
test -d /usr/local && PATH=/usr/local/bin:/usr/local/sbin:$PATH &&
                      MANPATH=/usr/local/share/man:$MANPATH
test -d /usr/X11R6 && PATH=$PATH:/usr/X11R6/bin &&
                      MANPATH=$MANPATH:/usr/X11R6/man
test -d /opt       && PATH=/opt/local/bin:/opt/local/sbin:$PATH &&
                      MANPATH=/opt/local/share/man:$MANPATH
export PATH MANPATH

if test -x /opt/local/bin/emacs; then
    EDITOR=/opt/local/bin/emacs; export EDITOR
else
    EDITOR=/usr/bin/emacs; export EDITOR
fi

if test -x /opt/local/bin/lv; then
    PAGER=/opt/local/bin/lv; export PAGER
    LV="-E'$EDITOR +%d'"; export LV
else
    PAGER=/usr/bin/less; export PAGER
fi

BLOCKSIZE=k; export BLOCKSIZE

# If you'd like to use CVS over SSH.
CVS_RSH=ssh; export CVS_RSH

# include .bashrc if it exists
test -f ~/.bashrc && . ~/.bashrc

ちなみに、環境変数 LANG を .bash_profile と environment.plist の双方で設定している理由としては、

  1. ファインダー上からアプリケーションを直接起動したような場合にはログインシェルが介されず、.bash_profile が読まれないため。
    • たとえば gimp.app などの場合、LANG が未設定のままでは表示されるフォントが化ける等の問題が生じる。
    • 検証用のアプリケーションを用意したので、興味があれば試されたい。(ユニバーサルバイナリ/OS X 10.4 以降)
  2. リモートから SSH ログインをおこなった際などには environment.plist が読まれないため。

[編集] .inputrc

readline 対応のアプリケーションで delete を使った文字の削除が正常に機能するように設定。

[~/.inputrc]
"\e[3~": delete-char

(ブラウザからのコピー&ペーストの際、「\」の字が化けることがあるので注意。)

[編集] .emacs

[~/.emacs]
(set-language-environment "Japanese")
(setq default-buffer-file-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

;; In Zenitani's Carbon Emacs Package,
;; file-name-coding-system is set to utf-8m by default
(when (and (>= emacs-major-version 22)
           (eq file-name-coding-system nil))
  (set-file-name-coding-system 'utf-8))

;; workaround for IM issue in Carbon Emacs Package 20071106~
;; see http://homepage.mac.com/zenitani/emacs-e.html for more details
(when (featurep 'carbon-emacs-package)
  (setq default-input-method "MacOSX"))

(global-set-key "\C-h" 'delete-backward-char)
(global-set-key "\e[3~" 'delete-char)

;; Don't show the startup splash screen
(setq inhibit-startup-message t)

;(setq blink-matching-paren nil)
(setq blink-matching-delay 0.1)

(ブラウザからのコピー&ペーストの際、「\」の字が化けることがあるので注意。)

C-h が効かない?

デフォルトの Emacs では、C-h は help に関連付けられているが、ここでは BackSpace キーの挙動を優先するため、delete-backward-char として再定義している。本来の help を使いたい場合には、C-h の代わりに F1 または M-x help を使うようにすること。このため、たとえば emacs tutorial を表示したい場合には、C-h t ではなく F1 t と打鍵する必要がある。

閉じ括弧入力直後の文字化け問題について

Emacs でソースコードを編集する際、閉じ括弧をタイプすると、対応する括弧へとカーソルを一時的に飛ばしてくれる機能 (blink-matching-paren) がある。通常ならば重宝する機能なのだが、Terminal.app 上で Emacs を使用する場合、カーソルが飛んでいる最中 (デフォルトで1秒間) に後続の文字をタイプすると、表示が乱れてしまうという、かなり困った問題が生じる。そのままでは差し障りが大きいので、とりあえずの緩和策として、上の例では 100ms に短縮して用いている。なお、この機能を完全に切るには、「(setq blink-matching-paren nil)」とすればよい。

この問題は Mac OS X 10.5 Leopard の Terminal.app では発生しない。

行をまたいだ日本語変換時の文字化け問題について

Terminal.app 上の Emacs で、行をまたがる日本語のインライン変換をおこなうと、表示が一部乱れてしまう。みたところ、インライン変換の表示を消す前に Emacs の描画が行われてしまい、結果として画面上にインライン変換のインジケータ (下線や変換候補の表示) が残ってしまうようだ。(OS X 10.4.2 で確認)

画面が乱れたとき、手軽に画面の再描画をおこなうには C-l のキーバインドを使うとよい。

この問題は Mac OS X 10.5 Leopard の Terminal.app では発生しない。

[編集] .xinitrc

X11.app から X11 を立ち上げた際には、~/.xinitrc が読み込まれ実行される。

/usr/X11R6/lib/X11/xinit/xinitrc をひな形として、自分の環境にあったスクリプトを用意する。

$ cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc
$ chmod 644 ~/.xinitrc
[~/.xinitrc]
...
# start some nice programs

test -x /opt/local/bin/kinput2.macim && /opt/local/bin/kinput2.macim &

# start the window manager

exec quartz-wm