Beginning OS X Lion/インフラ整備編
Beginning OS X Lion > インフラ整備編
目次 |
[編集] OS X のインストール
Mac App Store より Mac OS X Lion をダウンロードし、インストールする。
Mac OS X Lion をインストールするにあたり、既存の環境 (Snow Leopard) 上にある MacPorts は事前にアンインストールしておくこと。また、MacPorts 以外のパッケージシステムを利用していたのなら、それらもアンインストールしておくのがよい。パッケージシステムの混用は推奨されない。
OS のインストール後にはソフトウェア・アップデートも忘れずに実施し、常に最新の状態に保つこと。
クリーンインストールをおこなうには
- Mac OS X Lion のインストール DVD を作成すれば、OS のクリーンインストールも可能。
- あるいは、Lion を一旦インストールしたのちに作成される Recovery HD 領域より起動し、Lion をネットワークインストールすることによっても OS のクリーンインストールは可能。
ディスクのアクセス権の不一致に注意
ソフトウェア・アップデートをおこなうと、実際にインストールされているファイルやディレクトリのパーミッションとレシートとの間で何故か不一致の生じることがあるようだ。
この問題は「ディスクユーティリティ」から「ディスクのアクセス権を修復」することで修正できる。
[編集] 基本的なデーモン
[編集] ntpd
メニューバーの右にある時計表示をクリックするか、「システム環境設定」の中から選択し、「日付と時刻」のウインドウを開く。
この中に「日付と時刻を自動的に設定」のチェックボックスが見つかるので、これをチェック。以上で ntpd が立ち上がる。(デフォルトでチェックが入っていることもある)
サイトで独自に NTP サーバを立ち上げている場合には、サーバ名の欄を適当なものに書き換える。NTP サーバが複数ある場合には、スペースで区切って書き入れること。
NTP サーバとの同期に関する状況は「ntpq -pn」で確認することができる。
[編集] sshd
sshd を立ち上げる必要があれば、「システム環境設定」の中から「共有」のアイコンをクリックし、リモートログイン サービスを有効にする。
[編集] Xcode と X11
[編集] Xcode 4.3
アップルのサイトから最新の Xcode 4.3.x for Lion を入手してインストールする。Mac App Store から無料でダウンロードできる。
Command Line Tools のインストール
Xcode 4.3 以降ではコマンドラインツールがオプション扱いとなっているため、別途導入する必要がある。
Xcode を起動し、画面上の指示に従って
- ライセンスアグリーメントの受諾
- Mobile Device Framework のインストール
- (必要に応じて) 古い Xcode Tools の削除
をおこなう。引き続き、メニューより Xcode → Preferences を開き、
- Downloads のパネルから Command Line Tools を導入
xcode_dir_path の設定
xcodebuild, xcrun が正常に動作するよう、Xcode のディレクトリパスを指定する。
$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
設定内容は /usr/share/xcode-select/xcode_dir_path に保存される。
[編集] Java
Mac OS X Lion では Java がインストールされていないため、アップルのサイトから入手してインストールする。
Java は port:db46 のビルドの際などに必要となる。
[編集] XQuartz
OS X Lion に添付の X11 (XQuartz 2.6.3) には多数のバグとセキュリティホールが存在するため、最新版にアップデートする必要がある。
XQuartz project から最新のパッケージを入手し、インストールしておくこと。
インストール後には一旦ログアウトすることで、次回ログイン時にスクリプトが読み込まれ、正しく利用できるようになる。
[編集] 基本的なソフトウェア
[編集] Terminal.app
Terminal.app を起動後、メニューより「ターミナル」→「環境設定」を開き、以下の設定をおこなうと便利に使える。
- 設定
- テキスト
- フォントはデフォルトの「Menlo Regular 11pt.」から無闇に変えないほうが無難。(サイズの変更程度ならば問題はないが、ファミリーを変更すると記号類のグリフの桁処理がおかしくなる場合がある。)
- シェル
- シェルの終了時:ウインドウを閉じる
- キーボード
- 以下の文字列をシェルへ送信する
- end : CONTROL+OPTION+[ [ F ←3文字
- home : CONTROL+OPTION+[ [ H
- page down : CONTROL+OPTION+[ [ 6 ~ ←4文字
- page up : CONTROL+OPTION+[ [ 5 ~
- 以下の文字列をシェルへ送信する
- 詳細
- Delete (BackSpace) 押下時にはデフォルトで BS (0x08) の制御文字が送出される。このキャラクタが使えないホストに対して頻繁にログインするような場合 (かつ、ホスト側の設定で吸収しきれない場合) には、「Delete キーで Ctrl-H を送信」をチェックしておくとよい。
- テキスト
[編集] MacPorts
MacPorts のサイトから最新のソースを入手し、ビルドする。
$ mkdir ~/Sources $ cd ~/Sources $ svn export http://svn.macports.org/repository/macports/tags/release_2_0_4 $ cd release_2_0_4/base/ $ ./configure $ make -j8 $ 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 +cp932fix
[編集] X11 環境の整備
[編集] kinput2
日本語インプットメソッドとして kinput2 を導入する。
$ sudo port install kinput2
依存関係により canna も導入される。canna はサーバなので、以下のコマンドで自動的に起動されるように設定しておく。
$ sudo port load canna
kinput2 を用いて実際に日本語を入力するには、environment.plist と .xinitrc.d/*.sh の設定が必要。
kinput2 のキーバインドに関して
MacPorts の kinput2 では、標準の Shift+Space や Control+o 以外に Command+Space も変換キーとして使えるようにしてあるのだが、XQuartz の或るバージョン以降からは正常動作しなくなってしまった。残念。(XQuartz 側の問題)
[編集] 基本的な設定ファイル
[編集] 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</string>
</dict>
</plist>
environment.plist はユーザがデスクトップにログインした際、ログインシェルを起動する前に読み込まれる。リモートからの SSH ログイン時には読まれない。
再ログインすると設定が反映されているはずなので、次に進む前に正しく設定されているかどうかを確認しておくこと。
$ export ... declare -x LANG="ja_JP.UTF-8" ... declare -x XMODIFIERS="@im=kinput2" ...
なお、LANG に関しては Terminal.app の設定項目にある「起動時にロケール環境変数を設定」がチェックされている場合、シェルが起動するまでに書き換えられてしまうことがある。
参考:
[編集] .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 65532
#ulimit -u 532
#ulimit -n 10240
LANG=ja_JP.UTF-8; export LANG
PATH="/usr/bin:/usr/sbin:/bin:/sbin"
MANPATH="/usr/share/man"
if test -d /opt/X11; then
PATH=/opt/X11/bin:$PATH
MANPATH=/opt/X11/share/man:$MANPATH
else
PATH=/usr/X11/bin:$PATH
MANPATH=/usr/X11/share/man:$MANPATH
fi
test -d /usr/local && PATH=/usr/local/bin:/usr/local/sbin:$PATH &&
MANPATH=/usr/local/share/man:$MANPATH
test -d /opt/local && 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
# include .bashrc if it exists
test -f ~/.bashrc && . ~/.bashrc
ちなみに、環境変数 LANG を .bash_profile と environment.plist の双方で設定している理由としては、
- ファインダー上からアプリケーションを直接起動したような場合にはログインシェルが介されず、.bash_profile が読まれないため。
- たとえば gimp.app などの場合、LANG が未設定のままでは表示されるフォントが化ける等の問題が生じる。
- 検証用のアプリケーションを用意したので、興味があれば試されたい。(ユニバーサルバイナリ/OS X 10.4 以降)
- リモートから SSH ログインをおこなった際などには environment.plist が読まれないため。
[編集] .inputrc
readline 対応のアプリケーションで delete を使った文字の削除や page up/down によるヒストリの操作が正常に機能するように設定。
[~/.inputrc] "\e[3~": delete-char "\e[5~": beginning-of-history "\e[6~": end-of-history
BSD ライセンスの互換ライブラリ libedit で同様の設定をおこなうには以下のようにする。
[~/.editrc] bind -s '\e[3~' '^D' bind '\e[5~' ed-prev-history bind '\e[6~' ed-next-history
libedit にはヒストリの先頭・末尾に移動するコマンドが用意されていないので、ここではその代替として ed-prev-history, ed-next-history にそれぞれ割り当てている。
(ブラウザからのコピー&ペーストの際、「\」の字が化けることがあるので注意。)
[編集] .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)
;; Zenitani's Carbon Emacs Package uses utf-8m instead of utf-8 as file-name-coding-system by default
(when (and (>= emacs-major-version 22)
(eq file-name-coding-system nil))
(set-file-name-coding-system 'utf-8))
(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)
;; for Cocoa Emacs
(when (eq window-system 'ns)
(setq exec-path (cons "/opt/local/bin" exec-path)) ;; MacPorts
(create-fontset-from-ascii-font "Menlo-14:weight=normal:slant=normal" nil "menlokakugo")
(set-fontset-font "fontset-menlokakugo"
'unicode
(font-spec :family "Hiragino Kaku Gothic ProN" :size 16)
nil
'append)
(add-to-list 'default-frame-alist '(font . "fontset-menlokakugo")))
(ブラウザからのコピー&ペーストの際、「\」の字が化けることがあるので注意。)
C-h が効かない?
デフォルトの Emacs では、C-h は help に関連付けられているが、ここでは BackSpace キーの挙動を優先するため、delete-backward-char として再定義している。本来の help を使いたい場合には、C-h の代わりに F1 または M-x help を使うようにすること。このため、たとえば emacs tutorial を表示したい場合には、C-h t ではなく F1 t と打鍵する必要がある。
[編集] .xinitrc.d/*.sh
XQuartz.app から X11 を立ち上げた際には、ディレクトリ ~/.xinitrc.d 内に配置した *.sh ファイルが読み込まれ、実行される。
このディレクトリ内に自分の環境にあったスクリプトを用意するとよい。たとえば日本語入力をおこなうため、X11 の起動時に kinput2 を常駐させるには、以下のようにする。
$ mkdir ~/.xinitrc.d
[~/.xinitrc.d/10-kinput2.sh] test -x /opt/local/bin/kinput2 && /opt/local/bin/kinput2 &
$ chmod 755 ~/.xinitrc.d/10-kinput2.sh
なお、これらのスクリプトは /opt/X11/lib/X11/xinit/xinitrc → /opt/X11/lib/X11/xinit/xinitrc.d/98-user.sh → ~/.xinitrc.d/*.sh の順で読み込まれる仕組みになっている。