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

提供:Beginning OS X
移動: 案内, 検索

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

目次

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

Mac App Store より Mac OS X Lion をダウンロードし、インストールする。

Mac OS X Lion をインストールするにあたり、既存の環境 (Snow Leopard) 上にある MacPorts は事前にアンインストールしておくこと。また、MacPorts 以外のパッケージシステムを利用していたのなら、それらもアンインストールしておくのがよい。パッケージシステムの混用は推奨されない

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

クリーンインストールをおこなうには

ディスクのアクセス権の不一致に注意

ソフトウェア・アップデートをおこなうと、実際にインストールされているファイルやディレクトリのパーミッションとレシートとの間で何故か不一致の生じることがあるようだ。

この問題は「ディスクユーティリティ」から「ディスクのアクセス権を修復」することで修正できる。

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

[編集] ntpd

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

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

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

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

[編集] sshd

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

[編集] Xcode と X11

[編集] Xcode 4.2

既存の環境 (Snow Leopard) 上で Xcode 3.2.x を利用していた場合には、Xcode 3.2.x をアンインストールしておくこと。

アップルのサイトから最新の Xcode 4.2.x for Lion を入手してインストールする。Mac App Store から無料でダウンロードできる。

Xcode 4.1 について

Xcode 4.2 以降はコンパイラが GNU Compiler Collection から LLVM Compiler Infrastructure に全面的に切り替わっており、2011 年 10 月 7 日現在、それに伴う若干の不具合が認められる。

個人的に確認した限りにおいても、inkscape, nmap がビルドに失敗する (#31492, #30561) 等といった比較的小さな問題のほか、ビルドした boost, wireshark が正常に使えない (#31525, #31615) という問題も生じているようだ。

安定性を重視する場合、Xcode 4.2 への早期の移行は推奨しない。

Xcode 4.1 は https://developer.apple.com/downloads/download.action?path=Developer_Tools/xcode_4.1_for_lion/xcode_4.1_for_lion.dmg から入手できるようだ。

[編集] 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_3
$ cd release_2_0_3/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 の双方で設定している理由としては、

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

個人用ツール
名前空間
変種
操作
案内
ツールボックス