雑記 - MacOSXメモ Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

Mac OS X (macOS)関連の雑多なメモ。特にソフトウェア周り。

下にいくほど新しい情報になっているので、上の方は obsolete な情報です。


!kterm & ことえり
[[MacOSX用のktermとkinput2]]

!keyboard配列
Mac OS Xで互換機のJISキーボードを正しく認識させる[[方法|keyboard配列]]についてのメモ

! locate database
/usr/libexec/locate.updatedb


!spotlight  (metadata importer)
Tiger の Spotlight で、*.tex のような未定義な文書を取り扱うには、それ用の metadata importer を用意しないといけないらしい。
([[Appleの文書|http://developer.apple.com/documentation/Carbon/Conceptual/MDImporters/index.html#//apple_ref/doc/uid/TP40001267]])

もう一つの方法としては、
/Developer/Tools/SetFile -t 'TEXT' aho.tex
を実行すること。
これによって aho.tex の file type が TEXT に設定され、Spotlight で検索できるようになる。

!spotlightの制御
spotlight のメタデータ収集は、mdutil コマンドを使えば制御できるみたい。root権限が必要。
mdutil -i off /Volumes/Hoge
あるいは、mount point のトップディレクトリに .metadata_never_index という空ファイルを作ることでメタデータの作成を抑制できるらしい。

!spotlightを止める
/etc/hostconfig ファイルを修正すればよい。
SPOTLIGHT=-NO-

!gcc_select
gccのバージョンを切り替えるには、gcc_selectというコマンドを使えば良い。root権限が必要。

!uxterm
Panther 以降の X11 では、uxterm という terminal (script)上でkinput2を使うことで、日本語名のファイルやフォルダを作成することが可能。ls -v で日本語ファイル名も表示されます。
また、他のapplicationからcopy & paste (中ボタンクリック) することができます。
ちなみに、この uxterm は UTF8 locale な xterm を起動するためのwrapper script です。Jaguar の時にあったかどうかは不明。

!uxtermでemacs
Tigerにはemacs-21.2.1が入っている。この versionではunicodeの扱いがよろしくないらしい。ということでmule-ucsを入れる。取ってきて展開して
cd Mule-UCS-0.84
cd lisp
patch -p0 < ../../mule-ucs-emacs-21.2.patch
cd ../
emacs -q --no-site-file -batch -l mucs-comp.el
cp -r lisp ~/lib/lisp/mule-ucs
(ここで {{attach_anchor('mule-ucs-emacs-21.2.patch')}} というのは、 http://tsukuba.m17n.org/mule-archive/2002-3/msg00000.html から)
あとは .emacs ファイルに
(setq load-path (append '("~/lib/lisp/mule-ucs") load-path))
(require 'un-define)
(set-language-environment 'Japanese)
(set-keyboard-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
とか書いておけば、kinput2 with Kotoeri から日本語入力とか、他のアプリケーションから Copy & paste できる。

!CD/SuperDrive の Eject menu
Eject ボタンの無いキーボードを使っているとき、以下の操作でデスクトップのメニューに Eject メニューを付けることができます。
/System/Library/CoreServices/Menu Extras/Eject.menu をダブルクリック
メニューから取り外すには、まず
~/Library/Preferences/com.apple.systemuiserver.plist
をダブルクリック。Property List Editor で開く(開発環境を入れてないと他のアプリケーションで開くかも)ので、Root -> MenuExtra 下の該当項目を削除。その後ログインし直せば良さそう。

!Canvas 忘備録
*画像に透明度などを適用したものを保存するときは、メニューの「イメージ→領域→レンダリング」した後に。マスクをかけたり、レイヤーを使った場合も多分同じ。

!Dashboard を止めるには
terminal を開いて
defaults write com.apple.dashboard mcx-disabled -boolean true
killall Dock
基本的にこれだけで良いのだが、F12 に割り当ててある Dashboard のショートカットを切っておこう。というのも、ショートカット F12 を押してしまうと Dashboard が起動してしまうのだ。
なお、上述のコマンド(1行目の defaults ...)によって、~/Library/Preference/com.apple.dashboard.plist が修正される。(Property List Editor とかで見たら確認できます。)

!PMUリセット
これは、むしろハードウェアの話。

例えばバラしをして内蔵電池が放電してしまったような時に、JISキーボードが USキーボードとして誤認識されたり、CD/DVD ドライブで CD-ROMやDVDは読めるが CDDAが読めないといったハードウェア周りのトラブルが発生することがある。このような時に
Power Management Unit (PMU)のリセットをすると幸せになることがある。

Apple のサイトや検索エンジンで調べれば、いろんな情報が得られます。

!コマンドラインからの sleep
[[macsleep|http://www.majid.info/mylos/weblog/2003/12/05-1.html]] とか [[SleepNow|http://www.snoize.com/SleepNow/]]

!modify power management settings
pmset コマンド

!zphoto
[[Mac OS X上での zphoto の make|zphoto for Mac OS X]]

!hibernation
[[safe sleep]]

!PRAM/NVRAM clear
Cmd+Opt+P+R (cold boot)

!Open Firmware
Cmd+Opt+O+F

!load された kernel extentions
kextstat  リスト表示

!Mail.app のメール格納形式についてのメモ
Panther までは一つのファイルに格納する mbox 形式。拡張子は mbox

Tiger から(多分spotlightのために)、1 メールを 1 ファイルに。拡張子は emlx

!Finderからコマンド実行
.command という拡張子を付ける

!X11 customize
defaults write com.apple.x11 wm_ffm -bool true
とすると、X11 を利用中に、X11なウインドウ上に mouse を持ってくると、それがアクティブウインドウになる。
/usr/X11R6/lib/X11/doc/html/quartz-wm.1.html
以下も参考
http://forums.macosxhints.com/printthread.php?t=39069

!Keynote2への数式入力
LaTeXiT ( http://www.apple.com/downloads/macosx/math_science/latexit.html , http://ktd.club.fr/programmation/latexit.php ) に加えて、Keynote2 LinkBack Plugin ( http://commons.ucalgary.ca/~king/projects/keynoteplugins/linkback/ ) をインストールすると、すーーーーごく便利。(LaTeX環境のインストールが前提。)

同様なソフトで EquationEditor なるものもありますが、LaTeXiT はLinkBackに対応しているので、貼付けた数式を後から編集することができるのです。

keynote3, keynote4 も同じく。

!便利そうなツール、ユーティリティ
SideTrack (shareware)
iScroll2
MenuCalendarClock
iCook - for G3 iBook
OnyX

!Apple Remote Desktop
Tiger の Apple Remote Desktop は VNC server 機能が付いている。
システム環境設定の「共有」でApple Remote Desktop を On にすると、他の PC の vnc client を使って画面を制御できる。いやぁ、気づかなかったなぁ。

!ApplePMU::PMU FORCED SHUTDOWN, CAUSE = -127
ん?Mac miini が 5月1日の15:00に何故か reboot したようだ。/var/log/syslog を見てみると
ApplePMU::PMU FORCED SHUTDOWN, CAUSE = -127
との記述。うーん、、、なんだろう、-127 って。

google で調べてみると、error code が書かれた header file 情報が。
/System/Library/Frameworks/CoreServices.framework/(長いので折り返し)
Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h
これによると、-127 は
non-hardware Internal file system error
だとか。そういえば、思い当たる節があるなぁ。。。DiskUtility.app で検証すべきだな。

!Terminal.app
emacs -nw で表示がくずれるときは、Terminal のウインドウ設定→バッファ→スクロールバッファ→長過ぎる行を折り返すのチェックを外す

!パーミッション
一般ユーザが書き込み不可な領域(例えば/Applications)に変更を加える際、管理者で認証を行えば可能である。が、この際書き換えられたファイルフォルダのownerはこの一般ユーザとなることに注意。管理者で認証したんだから、ownerは管理者にすべきだと思うんだがなぁ。

!X11's bug on MacBook
アプリケーション切り替えで X11 が一度で表に出てこない bug が再発。10.4.3 で bug fix されたのだが、最近購入した MacBook で同じ問題が発生している。(未検証であるが、10.4.3 update に含まれる Xquartz をコピーすれば治るとかいう話がどこかに書いてあったような。。。ですが、10.4.3 は PPC binary なのでだめですね。)

bug が修正されるまで、とりあえず Applescript プログラムで誤摩化すことにするか。(zip圧縮したもの→  {{attach_anchor('X.zip')}}
この Applescript を実行すると、X11 のウインドウが active になります。)

この bug ですが、Darwin のサイトから X11-0.40.2.tar.gz をとってきて make World し、できた Xquartz を /usr/X11R6/bin/Xquartz と入れ替えることで一応解決しました。(作り直した Xquartz を圧縮したもの→{{attach_anchor('Xquartz.zip')}} i386 binary です。)

!X11 windows no longer stay in the background after selecting X11 (上の続き)
いろんな掲示板をみると、どうやら 10.4.4(?) 以降、X11 Window が一度で active にならない bug が再発している模様。

Darwin のサイトから X11 の source code を取得しテストしてみたところ、
X11-0.40.2  (2005-11-19) -> OK
X11-0.40.80 (2006-04-28) -> NG
という結果が得られた。

このことから Tiger 10.4.3 では bug fix された X11-0.40.2 が用いられたが、それ以降ではこの bug が内包されたままの X11 になっているのだろうという予測。
X11-0.40.2 (2005-11-19)と X11-0.40.80 (2006-04-28)の source を比較し、X11-0.40.80 に対する patch を作成 → {{attach_anchor('patch_to_X11-0.40.80')}}
cd X11-0.40.80/xc
patch -p0 < ~/patch_to_X11-0.40.80
make World
cd programs/Xserver
strip Xquartz
sudo mv /usr/X11R/bin/Xquartz /usr/X11R6/bin/Xquartz.orig
sudo cp Xquartz /usr/X11R6/bin/
一応 Apple の bug reporter に(patch込みで)報告済み。直してくれるといいなぁ。

!X11Update2006
2006年11月初めに、OpenGL拡張(GLX)な X11 for Mac OS X アップデートが。

上述の問題もコソッと修正されているようです。良かった良かった。

!ログイン時の自動起動アプリケーション設定
何らかの事情でシステム環境設定のアカウントが開けない場合(例えば登録ユーザ数が膨大だとか)、ログイン時の自動起動アプリケーションを設定することができない。この場合、Property List Editor.app などを使って ~/Library/Preferences/loginwindow.plist を直接編集してしまおう。
{{attach_anchor('sample_of_loginwindow.plist')}}

!Mac OS 拡張(大文字/小文字を区別、ジャーナリング)
Tiger からだと思うが、ディスクフォーマット時に、大文字小文字を区別する HFS+ が選べるようになっている。(ディスクユーティリティで)

UNIX な世界では、大文字小文字は区別するのが普通なので、これを試してみることにする。Quad を DVD で起動し、ターゲットモードで起動した MacBook を Firewire で接続する。ditto を使って、MacBook の内容をバックアップ。
ditto -rsrcFork -c /Volume/Macintosh\ HD /Volume/Macintosh\ HD\ 1/macbook.cpio
MacBook を DVD で起動し、ディスクユーティリティでフォーマットする。ここで「Mac OS 拡張(大文字/小文字を区別、ジャーナリング)」を選ぶ。ターゲットモードで起動した Quad を接続し、ditto で書き戻す。
ditto -x /Volume/Macintosh\ HD\ 1/macbook.cpio /Volume/Macintosh\ HD/
書き戻した後、念のためにディスクユーティリティで「ディスクのアクセス権を修復」し、その後起動ディスクで MacBook のハードディスクから起動するように設定。

X11 などを使って試してみると
[nagato@mb:~/aho]$ touch a A
[nagato@mb:~/aho]$ ls -l
total 0
-rw-r--r--   1 nagato  nagato  0 11 15 23:56 A
-rw-r--r--   1 nagato  nagato  0 11 15 23:56 a
なるほど、普通の UNIX のように大文字と小文字のファイルが共存できている。

いろんなアプリケーションで問題を生じないか、しばらく様子をみてみよう。

!外部デバイスのゴミ箱について
例えば、Firewire な外付け HDD を使っているときにゴミ箱はどうなるか。

各デバイス用のゴミ箱は、そのデバイス上に作成される。
/Volumes/Hogehoge というデバイスなら /Volumes/Hogehoge/.Trashes に、
ローカルディスクなら /Volumes/Macintosh\ HD/.Trashes にゴミ箱用のフォルダが作成される。

Mac OS X は UNIX ベースのマルチユーザ OSなので、各ユーザ毎のゴミ箱が必要となる。この各ユーザ毎のゴミ箱は、デバイスの .Trashes フォルダの中に、ユーザの id number のフォルダとして作成される。

!Safari 関連のカスタマイズ
debug メニューを出す
defaults write com.apple.Safari IncludeDebugMenu -bool true
PDF をウインドウ表示しないで保存
defaults write com.apple.Safari WebKitOmitPDFSupport -bool true

!Safariが落ちる?
Safari が落ちてしまう現象が発生する時は、/Library/InputManagers/ 以下に、何ぞ入れてないか確認してみよう。

(職場のPowerMacG4である日を境に(security update後かな?)この現象が発生。昔入れてみたPicLensが犯人でした。(2007/07))

!インターネット共有
有線 LAN と 無線 LAN が付いている Mac はインターネット共有機能によって、他の PC をネットワークに繋ぐ為のルーターにすることができます。とても便利です。

さてこのインターネット共有ですが、内部ネットワークから特定ポートのアクセスができないことがあります。
これはインターネット共有の標準設定では、ファイアーウオール機能で開けてあるポート以外の通信を遮断している為のようです。

例えば、私がアパートで使っている Mac mini は、リモートログイン(ssh)とウェブ共有(http)を ON にした上でファイアーウオール機能を使っているのですが、システム環境設定のファイアーウオール機能を用いると ssh の 22 番と http の 80 以外の通信は外部からだけでなく内部からも遮断されてしまいます。
つまり、インターネット共有機能を使ってネットワーク接続している他の PC などから、例えば https 接続をすることができません。

で、対処方法ですが、、、ipfw コマンドを使ってファイアーウオール機能を自分で設定してしまえば良いです。(システム環境設定のファイアーウオール機能も ipfw を使っているはずです。ipfw についての説明は、他の詳しいサイトを参照してください。)
例えば、次のようなコマンドを管理者権限で実行すれば、内部から https 通信ができるようになります。:)

ipfw -f flush
ipfw add  divert 8668 ip from any to any via ppp0
ipfw add  allow ip from any to any via lo*
ipfw add  deny ip from 127.0.0.0/8 to any in
ipfw add  deny ip from any to 127.0.0.0/8 in
ipfw add  deny ip from 224.0.0.0/3 to any in
ipfw add  deny tcp from any to 224.0.0.0/3 in
ipfw add  allow tcp from any to any out
ipfw add  allow tcp from any to any established
ipfw add  allow tcp from any to any frag
ipfw add  allow tcp from any to any dst-port 22 in
ipfw add  allow tcp from any to any dst-port 80 in
ipfw add  allow tcp from any to any dst-port 427 in
ipfw add  allow tcp from any to any dst-port 443 in
ipfw add  deny tcp from any to any
ipfw add  allow ip from any to any

上記の記述に誤りがあっても責任は持ちません。
自分でよく調べて、全て自己責任で。;)

!X11's bug on Leopard
Core Duo な MacBook に Leopard を入れました。速くなったような気がします。それは良いんですが、、、、

アプリケーション切り替えで X11 が一度で表に出てこない bug がまたまた再発。orz.... おーい、いい加減にしてくれ〜。

darwin source に X11 の source もあるみたいなので、時間があれば調べてみよう。Leopard の X11 は Xorg 7.2 ベースの模様。
darwin source にあった Tiger の XFree86 と Leopard の Xorg 7.2 、それからたまたま手元にあった Xorg7.3 の source を比較してみたけど、なんか関数がころころ変わってるなぁ。でも X の version が違うからそんなもんなのかな。

もしかしなくても誰か対処した人とかいそうだなと思ってググってみたら、出てくる出てくる。^-^;;
XFree86 → Xorg となったせいか、どうやら他にもバグ満載のようで、あちこちで話題になっていたようです。以下の URL に patch を当てて作られたものがあります。

http://www.x.org/wiki/XDarwin

ここにある Xquartz を取ってきて差し替えたら ok 。
しかし、open source の世界は本当に良いですね〜

!Leopard での root アカウント
Leopard になって Netinfo が無くなってしまった。NEXTSTEP ユーザ&管理者だった私としては、ちょっと寂しい。ま、それはともかく、Leopard で root アカウントを有効にするには、Netinfo じゃなくて、ディレクトリユーティリティを使います。

!辞書
調べたい単語を選択した状態で、Cmd+Ctrl+d で辞書検索できる。(今まで知らなかった!)
あ、WebKitなアプリケーションだけらしい。

!CS3
Canvas の開発が終わったので、初めて買った Adobe CS3。大文字小文字を区別する HPS ファイルシステム(HFSX)にはインストールできないことが判明。非常に困った。

ちなみに HFSX なファイルシステムをパーティション分割し、後半を HFS+  でフォーマットしてもインストール不可。
つまり、システム領域のファイルシステムも HFS+ or HFSJ でないとダメな模様。

Adobe のサイトには、HFS ボリュームを用意すればインストールできるような説明が書いてある。が、事実できない(私だけでない。UFS を使っている人でも発生している。)ので、記述が間違っていると思われます。やれやれ。。。

!メモ
dscl -- Directory Service Command Line utility

!AdobePDFViewer.plugin
Safari ウインドウ内での PDF 描画を抑制してPDFファイルをダウンロードする方法は上述した。が、Adobe CS3 をインストールすると、plugin がインストールされてしまい、その結果 PDF を CS3 のアプリケーションで開こうとしてしまう。

で、どうすりゃいいかというと、以下の plugin ファイルを退けてしまえばよい。
/Library/Internet\ Plug-ins/AdobePDFViewer.plugin

!ことえりが変なとき
日本語入力ができずにグルグルになったりするときには、以下のファイルを捨ててログインし直そう。
~/Library/Preferences/com.apple.JapaneseAnalysis/*.dict

!w3m for Leopard (Intel)
Intel な Leopard で make した w3m を固めたもの。{{attach_anchor('gc7.1.tgz')}}, {{attach_anchor('w3m-052.tgz')}}
これらを落としてから、root で以下のように展開。( root を有効にしていないなら sudo を付ける。)

# tar zxf gc7.1.tgz -C /
# tar zxf w3m-052.tgz -C /

!w3m for Tiger (PPC)
PPC な Tiger で make した w3m を固めたもの。[[gc7.1ppc.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/gc7.1ppc.tgz]], [[w3m-052ppc.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/w3m-052ppc.tgz]]
これらを落としてから、root で以下のように展開。( root を有効にしていないなら sudo で。)

# tar zxf gc7.1ppc.tgz -C /
# tar zxf w3m-052ppc.tgz -C /

!Time machine について
Time capsule に保存したデータから、新しい HDD にシステムを復元してみたので、その時のメモ。

Time Capsule は 1Gbps のネットワークドライブとして設置されている。
MacBook(初代)に新しい HDD を取り付け、Leopard のインストール DVD で起動。新しい HDD をジャーナリングでフォーマット。
ディスクユーティリティを終了し、システム復元をしようと進めていった。が、「インストール先の選択」画面で、システムの復元先ボリュームの検索するところで延々待たされる。(30分放置しても、下の写真のまま)

{{attach_view('R0012320.jpg')}}

あまりに遅いので、システム再起動して、再度復元画面に進んだらあっさり認識。(復元に入る前に復元先ディスクを認識していると具合が悪いのかも。ディスクフォーマットした際には再起動した方が良さそう。あるいは HDD のフォーマットをしなくてよいのかもしれない。)

今回復元されるデータはおよそ 60GB 程度なのだが、復元にかかる時間は 3〜4時間程度になりそう。(4時間かかるとすると、ditto で古いディスクからコピーした方が速いだろう。)
とはいえ、非常に手軽にデータのバックアップ/リストアができるわけで Time machine / Time capsule は便利だと思います。買いです。

!intel & ppc な binary を作るには
gcc -arch i386 -arch ppc ....

!nkf 2.0.8b
tar zxf [[nkf.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/nkf.tgz]] -C /

!periodic
crontab に相当するもの。

/System/Library/LaunchDaemons/
の中の com.apple.periodic-{daily,weekly,monthly}.plist ならびに
/etc/default/periodic.conf と /etc/periodic/{dairy,weekly,monthly}/* を参照。

!rsync
OS X の rsync には、-E option (copy extended attributes, resource forks)がある。OS X 間でこれを使えば、resource fork とかの情報もコピーされる。(はず)

OS X 間(共に Leopard)で rsync すると、時々
rsync: recv_generator: failed to stat
とか
Input/output error (5)
といった error が表示される。この際、コピー自体はできている。もう一度 rsync すると error が出なかったり、ちょっと動きがあやしい。filesystem に問題があるのかなぁ。

!Leopard の X11
しばらく Leopard を使っていたにも関わらず、気づいていなかったのだけれど、Leopard の X11 は、設定ファイルの位置が変わっている。以前は、/etc/X11 以下にあったのだが、Leopard では /usr/X11/lib/X11 になったらしい。

!emacs, aspell

http://emacs-app.sourceforge.net/

http://aspell.net/

!GTK+ OSX Framework
Three frameworks needed for developing GTK+ applications natively on Mac OS X: GLib, Cairo and GTK+

http://www.gtk-osx.org/

pkgconfig dirs:
/Library/Frameworks/Gtk.framework/Resources/dev/lib/pkgconfig
/Library/Frameworks/GLib.framework/Resources/dev/lib/pkgconfig
/Library/Frameworks/Cairo.framework/Resources/dev/lib/pkgconfig
terminal 上で何かを configure && make するときには、
PKG_CONFIG_PATH="${gtk_pkgconfig}:${glib_pkgconfig}:${cairo_pkgconfig}"  \
./configure && make
てな風に。${xxx_pkgconfig} は上述の pkgconfig directories を。

![[X11.app 上で使う terminal]]
Leopard の X11.app で、どの terminal を使うか検討した[[メモ|X11.app 上で使う terminal]]。

!Acrobat による OCR テキスト認識
Mac OS X な話題ではないが、ここに書く事にする。

昔の論文などをスキャンして PDF 化したものを、Acrobat の OCR テキスト認識を使い、書かれている文章(画像)をそれなりの精度で認識させて PDF に書き込むことができる。文字情報が PDF に含まれていれば、Spotlight による検索にも引っかかるはずで便利が良い。というわけで、Adobe CS3 な Acrobat で OCR テキスト認識させて保存する手順を書いておく。

まず文字認識させたい PDF を Acrobat で開く。「文書」メニューの「OCRテキスト認識」から「OCRを使用してテキストを認識...」をクリック。OCR の言語を適当に設定して、OCR テキスト認識を開始。

テキスト認識が終わったら PDF を保存すればよいが、この際に Acrobat4 互換で保存しておくとよい。(Acrobat 4.0 互換にしておけば、Preview.app での表示が速い。Acrobat 8.0 以降とか新しい version で保存すると、Preview.app での表示が著しく遅い。)具体的に書くとファイルメニューから「別名で保存」をクリック、フォーマットを「Adobe PDF ファイル(最適化)」にし、その横の「設定ボタン」をクリック。互換性を確保というプルダウンメニューから「Acrobat 4.0 およびそれ以降」を選ぶ。また、画像はダウンサンプルしないように設定して保存した方がよいだろう。(ダウンサンプルすればファイルサイズは小さくなるが、元のPDFよりも汚い表示になって読みにくくなるので。)

!gnuplot-4.2.4 for Leopard
4.2.4 があったので入れることに。gnu readline を予め入れておく。
readline-5.2 を make しようとすると
i686-apple-darwin9-gcc-4.0.1: -compatibility_version only allowed with -dynamiclib
とかいった error が出る。[[こちら|http://d.hatena.ne.jp/agw/20071107]]の方が patch を書かれていたので、それを使わせてもらう。make して固めたもの→[[readline5.2.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/for_osx/readline5.2.tgz]]

で、gnuplot の方は
./configure --prefix=/usr/local --with-x --with-readline=gnu \
            --with-readline=/usr/local --enable-history-file
てなかんじで make 。固めたもの→[[gnuplot424.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/for_osx/gnuplot424.tgz]]

!「ネットワーク設定はほかのアプリケーションによって変更されました」?!
アパートでサーバをさせている Tiger 10.4.11 での話。

某 Virrus 対策ソフトを入れたことがトリガーとなり、システム環境設定のネットワーク設定パネルを開くと表題の「ネットワーク設定はほかの...」というアラートが出てパネルを終了できないというトラブルが発生。

このトラブルは discussion board などでも話題になっているが、PPP 接続設定などをしていたユーザが 10.4.11 にアップデートしたときに発生する障害の模様。私の Tiger では 10.4.11 にした後も問題が顕在化していなかったが、たまたまテストで某 Virrus 対策ソフトを入れたことがトリガーとなって発症した模様。

このトラブルは既に知っていたので、以前 discussion board を斜め読みしたことを思い出しながら、後述のような修正を行いトラブルを回避した。

もうちょっと説明を。このトラブルの原因は、/Library/Preferences/SystemConfiguration ディレクトリ内の、preferences.plist ファイルの内容に記述された AuthPassword key に対する data (encrypt された password 情報)のフォーマットが(おそらく) Tiger 10.4.11 から変わったためと思われる。おそらく、セキュリティ対策のために password 情報の encryption を変更したことが裏目に出たのではないだろうか。
その結果、古くから PPP 接続などのパスワード情報を覚えさせていたユーザが 10.4.11 に update した後に発症するのだろう。(ただし必ず発症する訳ではなさそう。)update した直後から発症する場合もあるようだし、何かのきっかけ(うちの場合某 Virrus 対策ソフトを入れたこと)で問題が顕在化することもあるようだ。

だらだらと前置きが長くなってしまったが、私がやった対処は以下の通り。
# /Library/Preferences/SystemConfiguration/prefernces.plist ファイルを vi で開いて、<key>AuthPassword</key> の下にある、<data>と</data>の間にある文字列を削除し保存。
# 1. の操作でネットワーク設定パネルは正常に表示されるようになったので、削除したパスワード情報を入力し直す。
# 念のため、再起動して PPPoE 接続が正常にできることを確認。

以下に修正前と修正後の preferences.plist の diff をあげておく。(encrypt されたパスワード等の部分は XXXXX で書き換えてある。)
--- preferences.plist.NG  2008-12-30 11:27:27.000000000 +0900
+++ preferences.plist   2008-12-30 11:52:32.000000000 +0900
@@ -532,13 +532,23 @@
                                 <key>AuthName</key>
                                 <string>xxxxxxxxxxx@ada.dion.ne.jp</string>
                                 <key>AuthPassword</key>
-                               <data>
-                               XXXXXXXXXXXXXXXXXXXXX==
-                               </data>
+                               <string>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</string>
+                               <key>AuthPasswordEncryption</key>
+                               <string>Keychain</string>
+                               <key>CommDisplayTerminalWindow</key>
+                               <integer>0</integer>
+                               <key>CommRedialCount</key>
+                               <integer>1</integer>
+                               <key>CommRedialEnabled</key>
+                               <integer>1</integer>
+                               <key>CommRedialInterval</key>
+                               <integer>30</integer>
                                 <key>CommUseTerminalScript</key>
                                 <integer>0</integer>
                                 <key>DialOnDemand</key>
                                 <integer>1</integer>
+                               <key>DisconnectOnFastUserSwitch</key>
+                               <integer>1</integer>
                                 <key>DisconnectOnIdle</key>
                                 <integer>0</integer>
                                 <key>DisconnectOnIdleTimer</key>
@@ -547,6 +557,8 @@
                                 <integer>1</integer>
                                 <key>DisconnectOnSleep</key>
                                 <integer>1</integer>
+                               <key>IPCPCompressionVJ</key>
+                               <integer>1</integer>
                                 <key>IdleReminder</key>
                                 <integer>0</integer>
                                 <key>IdleReminderTimer</key>

(2009/12 追記)他のユーザさんの iBook でも同じことが発生し、上述の手順で回避できました。:)

!Mail.app について
Leopard にアップデートしたら Mail.app が起動しなくなったという方が。その[[対処方法に付いてのメモ|Leopard にアップデートしたら Mail.app が起動しなくなった]]。

!lv 4.51
tar zxf [[lv451.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/lv451.tgz]] -C /

!ディスプレイ関連の short cut key
もしかすると機種に依存するかもしれないですが、
*Command+F1 拡張デスクトップとミラーリングの切り替え
*Command+F2 ディスプレイの検出

!hdiutil: couldn't unmount "disk3" - error 49153
Mac OS X server のシステムイメージユーティリティを使って NetBoot イメージを作成しようとした際に、エラーが出て失敗してしまった。ログをみると、hdiutil がイメージ作成時に利用した(仮想)デバイスを unmount できないことが理由で失敗したようだ。(unmount できなかった根本理由がどこにあるのか現時点では不明。RAID 上で作業していたことがわるいのか?)

df してみると
/dev/disk3s9    12Gi   10Gi  2.0Gi    85%    /private/tmp/mnt.0c3MX2
こんな感じの表示が。これが unmount されずに残されたもので、これを unmount するには、
sudo hdiutil detach -Force /private/tmp/mnt.0c3MX2
とすればよい。強制的に unmount されるはず。

システムイメージユーティリティでエラーが出たので、このままではイメージが作れないのかと思いきや、外部 HDD を保存先にすれば NetBoot イメージを作成することができた。
これで NetBoot 起動できるかの実験はまた後ほど。

!Safari の調子が悪い
このところ、(複数台の Mac で)Safari の調子がすこぶる悪い。すぐに CPU が 100% になってしまう。
Safari のリセットも行ってみたが問題が解決しない。別ユーザを新しく作成してみると問題ないことから、どこか(設定ファイル?)に問題があるのは確かなんだけれど、~/Library 以下の Safari に関係ありそうなファイルを手で削除してみても解決しない。

何らかのメンテナンスをしてやった方がいいのかもしれないということで OnyX 2.0.4 を使って掃除(?)してみたところ、何故か分からないけれど問題が解決した。本当は原因究明したいところなんだけどねぇ、、、
{{attach_view('OnyX_Leopard.png')}}

!ng-1.4.4
Leopard 上で作成したもの。 (universal binary)

tar zxf  {{attach_anchor('ng.tgz')}}  -C /

!iPod touch (OS 3.0) のメモ
iPhone OS 3.0 for iPod touch から、メモを母艦と同期できるようになったらしい。母艦側でメモにアクセスするには、Mail.app の「備忘録」→「メモ」を。

同期したメモが格納されているディレクトリは以下の通り
~/Library/Mail/Mailboxes/Notes.mbox
このディレクトリの中に Messages ディレクトリに、emlx 形式でメモが格納されている。

!Safari が遅い
MacBook Air (Leopard) 上の Safari が遅い。どうした訳か分からないが、ぐだぐだに遅い。ググってみると、ネットワーク環境設定で「IPv6 を切」にすれば良いという記述を見かけたので試してみた。ビンゴ。普通に速くなった。
{{attach_view('ipv6.png')}}

もうひとつの解は、ネットワーク環境設定で「DNS 設定を手入力する」というものだそうです。

IPv6 なんてネットワーク屋のオモチャは捨ててしまいましょう。

!Snow Leopard
MacBook Air の Leopard を Snow Leopard にあげた。Leopard の時よりもディスクスペースが空き、全般的にレスポンスが良くなった。また様々な動作に対する細かいチューニングが施されており、全体として格段に操作感が上がっている。

というわけで概ね問題は無いが、Preview.app の具合がよろしくない。他のシステム(Leopard 以前の OS X も含む)で作成した LaTeX な PDF ファイルが正しく表示されない。(正しい表示はこちら→{{attach_anchor('Preview_OK.png')}})
{{attach_view('Preview_NG.png')}}

PDF rendering engine(font の扱いかな)のバグだろうと思う。sample ファイルを作成し bug reporter 経由で Apple に伝えておいた。Preview.app は使用頻度が高いので早く修正される事を望む。(Adobe Reader はできればあまり入れたくないので。)

(追記)この問題、Snow Leopard に上げたシステム上で dvipdfmx で作成した PDF が化けてしまう件とは別の問題です。ここで述べたのは別のシステムで作った LaTeX な PDF が化けてしまうというものなので、Snow Leopard 上の LaTeX システムは全然関係なく、Preview.app そのものの問題です。

あと Terminal.app の日本語(マルチバイト文字)処理がヘボな問題もあるが、Leopard の時にも良くならなかったので改善は期待できないかも。まぁ、私は X11 を使うからいいんだけど。

(追記)下にも追記したが、10.6.2 で解決しました。:)

!gnuplot-4.2.6 for Snow Leopard
9月に gnuplot-4.2.6 が出ていたので、それを入れることに。あらかじめ readline-6.0 を入れておく。
tar zxf readline-6.0.tar.gz && cd readline-6.0
./configure --prefix=/usr/local
make && make install
OS X default の readline じゃなく、上で入れた readline を使うように
tar zxf gnuplot-4.2.6.tar.gz && cd gnuplot-4.2.6
LDFLAGS="-L/usr/local/lib" ./configure --prefix=/usr/local --with-readline=gnu
make && make install

!Preview.app on Snow Leopard
上述の Preview.app での LaTeX な PDF の表示が化ける件。その後いろいろ実験した結果みつけた暫定処置について。

Preview.app が PDF ファイル中の LaTeX な数式フォントをうまく取り扱えていないことが原因の模様。~/Library/Fonts の中に TeX な Type1 フォント(適当に固めたもの→[[cm-type1.zip|http://ult.riise.hiroshima-u.ac.jp/~nagato/cm-type1.zip]])を入れておけば Preview.app がそれを使って表示してくれる。応急処置としてはこれで十分だろう。

あとは Apple が PDF rendering (font handling?)周りを修正してくれるのを待とう。

(追記 2009/11/10)10.6.2 update で解決しました!!(ADC からもメールあり)良かった良かった :)

!FlashBlock & Clicktoflash
Web 閲覧していて重たい Flash のページに出くわすと、システムリソースを食い潰されてしまいます。[[clicktoflash|http://rentzsch.github.com/clicktoflash/]] を入れると幸せになれるでしょう。
これ、Firefox の FlashBlock と似た機能を持っています。:)

!ffmpeg build on snow leopard
仕事で必要になり ffmpeg の build しなおし。MacBook Air 上の Snow Leopard で build したときのメモ。

tar zxf lame-398-2.tar.gz
cd lame-398-2
  ./configure --prefix=/usr/local --enable-shared --enable-mmx --enable-mmx2 --enable-sse --enable-ssse3
make
sudo make install

cd ..
tar zxf yasm-0.8.0.tar.gz
cd yasm-0.8.0
./configure --prefix=/usr/local
make
sudo make install

cd ..
tar jxf x264-snapshot-20091116-2245.tar.bz2
cd x264-snapshot-20091116-2245
./configure --prefix=/usr/local --enable-shared
make
sudo make install

cd ..
tar zxf faac-1.28.tar.gz
cd faac-1.28
./configure --prefix=/usr/local --enable-shared --enable-mmx --enable-mmx2 --enable-sse --enable-ssse3
make
sudo make install

cd ../
tar jxf faad2-2.7.tar.bz2
cd faad2-2.7
./configure --prefix=/usr/local --enable-shared --enable-mmx --enable-mmx2 --enable-sse --enable-ssse3
make
sudo make install

ffmpeg を svn で取ってきた後、
cd ../ffmpeg
./configure --prefix=/usr/local --enable-pthreads --enable-libx264 --enable-libmp3lame --enable-libfaac --enable-libfaad \\
   --enable-gpl --enable-nonfree --enable-shared --arch=x86_64 --enable-mmx --enable-mmx2 --enable-sse --enable-ssse3
make
sudo make install

大体、こんな感じ。処理を速くするために付けた option の --enable-mmx --enable-mmx2 --enable-sse --enable-ssse3 は適切かどうかはよく分からない。build 後に固めたもの→[[ffmpeg_snowleopard.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/for_osx/ffmpeg.20091127_MBA_SL.tgz]]

!セキュリティ保護されていない起動項目フォルダが見つかりました
{{attach_view('diskutility20100119.jpg')}}

ログイン時に「セキュリティ保護されていない起動項目フォルダが見つかりました」という警告パネルが表示される。どうやら /Library/StartupItems フォルダの permission が正しくないらしい。
[nagato@1817-107:~]$ ls -ld /Library/StartupItems
drwxr-xr-x  2 root  admin  68  9  8 10:34 /Library/StartupItems/

DiskUtility.app を使って、ディスクのアクセス権を修復することで解決。修復後には
[nagato@1817-107:~]$ ls -ld /Library/StartupItems
drwxr-xr-x  2 root  wheel  68  9  8 10:34 /Library/StartupItems/
どうやらグループが wheel ではなく admin になっていたらしい。何かのソフトを入れた時に変わってしまったのか。

!Snow Leopard の NFS 、ネットワークアカウント
DiskUtility.app のファイル→NFSマウント
システム環境設定のアカウント→ログインオプション→ネットワークアカウントサーバ

!tar
Mac OS X の tar は bsdtar のようで、gnutar とは違うようだ。
混ぜこぜで使うとフォルダの timestamp が展開した時刻に設定されてしまうようなので注意。
とはいえ、OS X だけを使うのであれば、二つの tar の差異を気にする必要はないだろう。

他のシステム(例えば Linux)とデータをやり取りする場合は気にした方が良い。Snow Leopard 上で tar (bsdtar) を用いて固めたものを Linux に持っていき、Linux 上の tar(gnutar) で展開するとディレクトリの time stamp が保持されない。データの同期をする場合に気を付けるべきだろう。

(追記2010/07/07) S谷さんと話をしていて気づいたのだが、10.4 Tiger や 10.5 Leopard には bsdtar は入ってなくて、gnutar が tar になっている。ということは、Snow Leopard で bsdtar が入り、そちらを tar にしたのか。10.5->10.6 で差し替えるとは、何てことを...

!emacs-23.1
リクエストがあったので、CoreDuo な MacBook 上で build してみた。→[[emacs-23.1-snow-leopard.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/for_osx/emacs-23.1-snow-leopard.tgz]]

なお、--without-x で作ってあります。root で以下のように展開すると /usr/local 以下に入ります。
tar zxf emacs-23.1-snow-leopard.tgz -C /

MacBook Air で 64bit 版も作成した→[[emacs-23.1-snow-leopard64.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/for_osx/emacs-23.1-snow-leopard64.tgz]]
CC='gcc -m64' ./configure --prefix=/usr/local --without-x && make

!ImageMagick
MacBook Air で build した 64bit 版→[[imagemagick-661-9.tgz|http://ult.riise.hiroshima-u.ac.jp/~nagato/for_osx/imagemagick-661-9.tgz]]

!automount
例えば linux な nfs file server を automount するには、/etc/auto_master に
/hoge                   auto_hoge       nosuid
などと書き加える。(mount option は man auto_master して、適切なものを書くこと。)

次に、以下を記載した /etc/auto_hoge というファイルを作成
ahoaho        192.168.0.10:/export
ここで 192.168.0.10 は fs の ip address です

後は autofs を起動し直せばよいので、reboot するか automount -c とかして設定を reload すればいいでしょう。
これで、/hoge/ahoaho にアクセスすると file server が自動マウントされる。

!spotlight を止めるには(snow leopard)
以前なら /etc/hostconfig 辺りで制御できていたが、snow leopard でみてみると This file is going away. とか書いてあって obsolete っぽい。上の方でも書いた mdutil コマンドで制御するしかないのかも。mdutil について改めて書いておくと
mdutil -i off volume名
とすると、特定の volume の indexing を止めることができる。全ての volume を止めるには
mdutil -a -i off
とすれば良い。spotlight を生かすには
mdutil -a -i on

!dscl 再び
Snow Leopard で admin でないユーザが developer tools で build しようとすると、「あんたは Developer Tools グループに入っとらんけぇ使えんよ」みたいなことを言われる。

対処方法は、すっかり忘れていた Directory Service の制御コマンド dscl を使って以下のように
dscl . append /Groups/_developer GroupMembership username

!OALD8
Oxford Advanced Learner's Dictionary 8th edition に付いている oadl8.app だが、Flash player plugin が 10.3 だと起動時に crash する。(ちなみに 10.2.159.1 だと動作する。)
security hole の問題もあるので、古い 10.2 系列を system default にするわけにはいかないが、oald8.app を使うときだけ Flash plugin 10.2 を使うようにしたい。
一応暫定的な対処方法が分かったのでメモしておこう。(某所にも書いたけど)

ポイントは、oald8.app のみが利用する plugin フォルダがあるかどうか。実はちょっと調べれば分かるけれど、oald8.app は mozilla origin のビューアプログラムなので、ディレクトリ構成はほとんど firefox 等と同じ。firefox では plugin フォルダがあるのでそこに入れてしまえば良いわけです。

oadl8.app の中をみてみると、
oadl8.app --- Contents --- MacOS/ ------- chrome/
                        |             |-- components/
                        |             |-- defaults/
                        |             |-- greprefs/
                        |             |-- init.d/
                        |             |-- oald8.data/
                        |             |-- plugins/
                        |             |-- res/
                        |              -- skcomponents/
                        |- Resources/
                         - Plug-Ins/
といったディレクトリ構成になっている。結論を先に書くと、oadl8.app/Contents/MacOS/plugins 内に 10.2.x の Flash Player Plugin を入れれば良い。(ちなみに Contents ディレクトリ内の Plug-Ins に入れた場合は、system default に入っている plugin の方が優先されるようなのでダメ)

というわけで、具体的な手順を書いておく(昨夜某所に書いたのを少し手直し)
# 古い Flash Player plugin を [[Archived Flash Player versions|http://kb2.adobe.com/cps/142/tn_14266.html]] から取ってくる。例えば 10.2.159.1。ダウンロードした zip ファイルを展開すると、中に各 OS 用の Flash plugin のインストーラが入っている。
# 既に入っている Flash Player Plugin 10.3.x を uninstall する。(/Applications/Utilities/Adobe Flash Player Install Manager.app を使えばよい。)
# 1.でダウンロード&展開した Plugin のインストーラを用いて 10.2 の Flash player plugin をインストール。Plugin のインストール先は /Library/Internet Plug-Ins/ である。
# terminal を起動し、open /Library/Internet Plug-Ins/ を実行すると Internet 関連の plugin の入ったディレクトリが Finder で表示される。その中に Flash Player.plugin というアイコンがあるはず。
# 同じく terminal 上で、open /Applications/oald8/oald8.app/Contents/MacOS/plugins/ して Finder 表示する。(ここで /Applications/oald8 に oald8.app を入れていると仮定した。)その plugins ディレクトリの中に、4. の Flash Player.plugin をコピー。
# 新しい Flash Player plugin 10.3.x をシステムにインストールして、system default の Flash Player plugin を最新のものにする。

蛇足であるが、Linux 用の oald8 の中には Flash Player plugin 10.0 r12 があらかじめ入っている。

蛇足の蛇足:結局やっていることは古い Flash Plugin 10.2 を oald8.app/Contents/MacOS/plugins/ の中に入れているだけ。古い  plugin 10.2 がありさえすれば手順は省けます。ただ Flash player plugin は(おそらく)再配布可能でないので、こんな面倒な手順を書いています。(でなかったら、plugin を固めて置いておくのですけどね...)

なお、上記の手順は Oxford University Press の方に連絡済み(2011年5月末)

!OALD8 addendum
Apple Support Communities に、OUP(Oxford Univ. Press)の方が以下の記事を投稿されていた(もちろん英語)

[[https://discussions.apple.com/message/16018022#16018022]]

どうやら OUP のサイトに古い Flash plugin を固めて置いているようなので、この記事の内容に従って操作してもらえればいいだろう

!pdisk
C作成室の iMac が起動しなくなったとのこと。調べてみると、partition map 辺りが壊れているようにみえる。取り出さないといけないデータはないとのことで再インストールすることに。

ところが、install Disk で起動して DiskUtility.app でフォーマットし直そうにも、操作がスタックしてしまう。こういう時にはやはりコマンド操作。

Terminal.app を開き、partition map を初期化するために
pdisk /dev/disk0 -initialize
しようとしたが、resource busy で蹴られてしまう。
正常にマウントできていないが、部分的に mount しかけている状態だろうと推測。で、
umount /dev/disk0s2
した後、
pdisk /dev/disk0 -initialize
すると、エラーなく終了。
pdisk /dev/disk0 で partition map を確認し問題なかったので、DiskUtility.app でフォーマットした。後は通常のインストール操作。

!LaTeXiT で日本語を
授業資料を作るのに LaTeXiT で日本語を使えた方が便利だと考えた。(研究関連は全部英語でよいので気にしていなかった)

latex については Snow Leopard の時に入れた小川さんのパッケージ(多分 2009/08/29 版)が入っているのだが、これは euc or sjis しか扱えないため、LaTeXiT で日本語処理に使う事ができない。

そこで UTF8 が扱える latex を入れようかと考えたが、最近主流になっている Texlive は大き過ぎるので、またまた小川さんが用意されている Drag & Drop UpTeX パッケージを入れさせてもらう事にした。
ダウンロードして、アプリケーションフォルダの中に UpTeX.app をコピーした後、LaTeXiT の環境設定のプログラムの欄を選び、pdflatex ではなく latex+dvipdf を選んだ上で LaTeX と dvipdf のコマンドをそれぞれ
/Applications/UpTeX.app/teTeX/bin/platex
/Applications/UpTeX.app/teTeX/bin/dvipdfmx
に変更。さらに platex 起動時のオプションとして -kanji=utf8 を追記。(オプション指定は、コマンド欄の右側にあるギアのアイコンをクリックすればよい。)
これで LaTeXiT で日本語も使えるようになった :)

!nvram
昔は PRAM と呼ばれていた、firmware の NVRAM を操作するためのコマンド
例えば、NVRAM の設定情報を得るには root で(あるいは sudo で)
# nvram -p
すればよい。詳細は、man nvram

!Mac OS X 固有のコマンドについてまとめてあるページ
[[OSXの固有コマンド|http://macwiki.sourceforge.jp/wiki/index.php/OSX%E3%81%AE%E5%9B%BA%E6%9C%89%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89]] (macwiki.sourceforge.jp)

!Preview.app の bug 再び
毎春作成している冊子の PDF ファイルが途中のページで表示できず固まってしまうと言われたので調べたところ、Lion 10.7.3 の Preview.app 等で発生する問題と分かった。(10.7.3 でも Adobe Reader 等であれば表示できるし、10.7.2 なら Preview.app で完璧に表示できる。もちろん他の環境ではきちんと表示できる。どうみても 10.7.3 の PDF rendering engine 周りの bug です。)

小さな sample PDF file を作成し、Apple Bug Reporter に連絡した。(2012.Mar.09)
さて、いつ直るかな?お手並み拝見。

!Preview.app の別の bug
Windows7 のキャプチャ画像(BMP) を Lion 10.7.4 の Preview.app が正しく処理できない。BMP を表示することはできる。が、部分選択したときに、クリップボードの中身が空っぽになる。故に、Preview で表示して部分選択した画像を Keynote などの他のアプリにコピーできない。
Windows の操作説明を書くのに不便。

ちなみに、ImageMagick の convert を使って BMP ファイルを PNG にしたものを表示して部分選択した場合は、正しくクリップボードに記憶される。

また、同じ BMP ファイルを Snow Leopard の Preview.app で処理した場合には、問題無くクリップボードに記憶される。

2012年7月現在、PDF で暴走する bug が未だに修正されていないという状況ゆえ、Apple bug reporter で報告する気力が湧かない。

!Preview.app の bug 修正
2012年9月20日、Lion 10.7.5 がリリースされたのと同時に、Apple から「あんたが報告しとったバグ、直っとると思うけぇ」というメールが来た。

確認してみたら確かに修正されている。というわけで、報告から半年で解決。

!外付け USB ディスクからのブート
パーティションテーブルを GUID 形式にしてフォーマットしてあれば、USB mass storage でも OS X のブートができる

GUID パーティション形式でフォーマットするには、ディスクユーティリティのパーティションタブ中にあるオプションから GUID 形式を選んでフォーマットすればよい

!ワイヤレス診断
Option キーを押しながらメニューのワイヤレスアイコンをクリックすると、隠しメニューの「"ワイヤレス診断"を開く」が現れる。これからワイヤレス診断用のツールが開くことができる。このツールで「Wi-Fi 接続の監視」をすることができる。

 {{attach_view('wireless_diag.png')}}

Mavericks に上げた後くらいから、アパートの Mac mini の無線が切れ易くなったので、このツールで調査中。→ 2.4GHz 帯が混雑しているためっぽい。

!spotlight の停止/再開
root で以下を実行すれば、spotlight を止められる
launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
有効にするには
  launchctl load /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
# root を有効にしていなければ、sudo を先頭に付けること

!ImageMagick
Mavericks にしている MBA 11" に --prefix=/opt/X11 で make install する。それに先立って /opt/X11 に jpeg library も入れておいた。

!デスクトップを表示、できない
Mavericks 10.9.2 にしている MBA 11" のタッチパッドで、デスクトップを表示するジェスチャが効かない!
これもバグっぽいな…
新規ユーザを作ってみたら、きちんと動いた。ということは個人の設定ファイルに問題があるのか…

!gnuplot-4.6.5
以前から入れていた gnuplot が malloc error で頻繁に落ちるので、まじめに入れなおした(ついでに version を 4.6.5 に)

readline 絡みで落ちている感じだったので、
/opt/X11 の下に readline-6.3 を入れた後、gnuplot-4.6.5 を入れた。
tar zxf ../readline-6.3.tar.gz
cd readline-6.3/
./configure --prefix=/opt/X11
make && make install
tar zxf ../gnuplot-4.6.5.tar.gz
cd gnuplot-4.6.5/
./configure --prefix=/opt/X11/ --with-readline=/opt/X11
make && make install
推測するに、/usr/lib/ 以下に入っている OS X の readline library との食い合せが悪かったのではないかと思う。(違うかもしれないけど)

!iTerm2 での East Asian Ambiguous Character Width Problem
Mavericks に上げた頃からか古い iTerm が終了時にクラッシュするのが気になっていたので、iTerm2 にした。ところが、おなじみ East Asian Ambiguous Character Width の問題で、一部の全角記号が重なってしまうことに気付く。iTerm2 の Preferences を開いて Profile 中の Text 欄最下部にある "Treat ambiguous-width characters as double width" というチェックボックスで解決。

!keynote や latexit
Mavericks を使っている時代の話だが、keynote6.2.2 はダメダメで話にならない。単独で使うのであれば構わないかもしれないが、他のアプリ(例えば illustrator とか)からのコピー&ペーストが出来ない。いろいろ試したり聞いたりしてみたが、私の結論としては Keynote 5.2 を使い続ける方が良い。

また、LaTeXiT であるが、version 2.7.x ではどうもうまくコンパイルできない問題(Align モードでコンパイルすると謎の "=3" という文字が入ったり(下図参照)、\mbox で日本語を入れるとコンパイルエラーが発生したり)があるので、version 2.6.x を使ったほうが良さそう。LaTeXiT の方の問題は latex package との絡みもあるかもしれないので、時間ができたら 2.7.x の source を読むかなぁ…

 {{attach_view('latexit27x.png')}}


!「このボリュームの所有権を無視」を無視する方法
実は一般にあまり意識されていないかもしれませんが、外付けディスクを利用する際、ファイルの所有権(Ownership)が無視された状態で自動マウントされています。このおかげで、外付けディスクを用い Mac 間でデータをやりとりする際にファイルの所有権の違いなどを気にせず利用することができています。というわけで、普通の使い方であれば便利な機能です。

ところがもし、その外付けデバイス内に所有権の異なるファイルが混在している(例えば複数人のホームディレクトリが入っているなど)時には少々困ったことが起こります。勝手に所有権を無視してマウントしてしまいますから、他者のファイルが見えてしまうのです。

また特殊ケースですが、システムボリュームのバックアップを ditto 等で取る時にも、この「所有権の無視」が悪さをします。(→[[ハードディスクコピー(Mac OS X)]])

以上のように、ケースによっては所有権を無視しないでマウントしてほしいことがあるわけです。その処方箋を何種類か書いておきます。

!!簡単なマウス操作で
まずは最も簡単なマウス操作による制御。マウントしたボリュームのアイコンを選択した状態で Cmd+i でパネルを開きます。(或いはアイコン上で右クリックして「情報を見る」)そのパネルの一番下「共有とアクセス権」のところに「このボリューム上の所有権を無視」にチェックが入っていると思います。鍵マークをクリックして解除した後に、このチェックをはずしましょう。(鍵マークを解除する際に管理者権限が必要)

!!hdiutils (コマンドライン操作)
hdiutils で detach した後、ownership を on にして attach
hdiutils detach device_name
hdiutils attach -owners on device_name
device_name には該当するボリュームのデバイス名(/dev/diskXsX みたいなの)を。hdutils コマンドを使う際に管理者権限が必要です。なお、USB メモリの場合 detach するとデバイス全体を eject してしまいデバイスが消えるので、この方法は使えないかもしれません。

!!diskutil (コマンドライン操作)
diskutil を使って Ownership を変える方法
sudo diskutil enableOwnership /Volume/hogehoge
sudo は、管理者の上の root 権限で命令を実行するための命令。管理者権限が必要となります。

!!vsdbutil (コマンドライン操作)
vsdbutil を使ってボリューム状態の DB を変える方法
sudo vsdbutil -a /Volume/hogehoge
前述と同じく管理者権限が必要となります。

といった具合に、いずれの方法にしてもボリューム上の所有権を有効に切り替えるためには、管理者権限が必要となります。
なお、hdiutils を使う手順を除き、一度変更してしまえばその状態を記憶してくれるため、同じディスクボリュームを使う際に同じ設定で自動マウントしてくれます。

以下蛇足。このマウント時の Ownership 設定は、DB ファイル (/var/db/volinfo.database) にディスクボリューム単位で記述されています。(上述の vsdbutil コマンドはシステム領域上の /var/db/volinfo.database ファイルを直接制御するためのもの。) この DB ファイルは plain text で、中にはディスクボリュームを識別するための16桁の英数字番号(たぶん一意に決められている)と、そのボリュームをマウントする際に Ownership を有効にするか(など?)の設定が組になって行単位で記載されています。動作を確認したところ、この volinfo.database ファイルの記載を参考にして自動マウントしているようです。もしも(私のように)複数台の Mac OS 端末群を管理しているのであれば、このファイルの中身を適宜配布してやれば、対象の外付けディスクを全ての Mac 端末で同じ Ownership の扱いでマウントすることができます。(手元にあった Snow Leopard から Yosemite まで同じ設定で動作することを確認済。たぶんそれらの前後の OS でも同じだろうと思います。)

!disk image file の修正
作成した disk image ファイル(*.img)の中を修正したい時、hdiutil で img を attach して、編集した後に detach してやればよい(元を修正して disk image を新たに作るのは時間が掛かるので)
hdiutils attach -owners on hogehoge.img
ポイントは -owners on を付けることくらいか。これを付ければ permission を enable にしてマウントしてくれる。マウントされた /Volumes/hogehoge/ 内を適宜修正したら、次のように detach
hidutils detach /Volumes/hogehoge
これでおしまい

!El Capitan での LaTeX 環境、Ghostscript
El Capitan からアレコレ変わったことに起因して LaTeX がうまく使えない件、奥村先生のところでいろいろ話題になっている。

いつものように、[[小川さんのサイト|http://www2.kumagaku.ac.jp/teacher/herogw/]] から UpTeX を導入。

コマンドラインから platex とか dvipdfmx を使う際には、
/Applications/UpTeX.app/Contents/Resources/TEX/texbin
にパスを通しておけば良い。

あと、eps の入った原稿を処理する際に gs が必要となるが、古い 9.x を使うとうまく処理できない。新しい gs を [[Richard Koch さんのサイト|http://pages.uoregon.edu/koch/]]から落として入れれば良い。

!LaTeXiT
上で述べたような version 2.7.x での問題はクリアされた(?)ようなので、新しい物にして大丈夫(たぶんね)。platex や dvipdfmx は UpTeX.app 内のものに。

!スクリーンキャプチャの保存場所変更
Cmd+Shift+3,4 でスクリーンキャプチャしたデータの保管場所を変える方法について。例えば ~/Desktop/hoge_capture なるフォルダに保管するには、格納場所のフォルダを作成し、defaults と launchctl を使って以下のように
mkdir ~/Desktop/hoge_capture
defaults write com.apple.screencapture location ~/Desktop/hoge_capture/
launchctl stop com.apple.SystemUIServer.agent
SystemUIServer は自動起動するはずなので stop だけで十分

!Parallels Desktop 11 for Mac
新しく導入した MacBook Pro 13inch Retina は OS が El Capitan。ところが El Capitan (Yosemiteもらしい)では Adobe CS4 がうまく動いてくれない。今の Adobe CC のライセンス形態はどうにも気に入らないので、この CS4 を使い続けたい。そこで(他にも理由はあるけれど)仮想環境の Parallels Desktop を導入。その上に OS X Mavericks をインストールして、その中で CS4 を使うということにした。そこそこ便利に使えている。

!Adobe CS4
ところで、2016年現在、Adobe CS4 を新たにインストールした後にAdobe Updater でアップデートしようとしても(アップデートはあるはずなのに)何故か蹴られてしまう。調べてみたところ、どうやら Adobe CS4 用の Adobe Updater がアクセスするサーバの証明書の期限が切れているようだ。対処方法としては、「Mac の時計を過去(2010頃)に戻す」、「アップデータを Adobe の Web サイトから落とす」といったところだろう。

!(更新頻度が下がり、5年くらい間が空いている ^-^;;)

!macOS のコマンドラインからの操作
ソフトウェアアップデートの確認
softwareupdate --list
インストールされている pkg の確認
pkgutil --pkgs
指定されたパッケージ hogehoge に含まれるファイル一覧
pkgutil --files hogehoge
指定されたパッケージ hogehoge に含まれるファイルを全削除
pkgutil --unlink hogehoge
指定されたパッケージ hogehoge のインストール情報を削除
pkgutil --forget hogehoge


!テキストのタブ揃え(keynote)
キーノートのテキストエリア内で複数列をタブ揃えをしたいとき、適宜 option + shift + tab で tab 入力できる

!verbose mode
root 権限で
nvram boot-args="-v"
することで、verbose mode で boot するように変更できる。システム起動時&終了時に裏でやっていることがずらずら表示されるので、個人的にオススメ。(ちなみに、通常であれば boot 時に cmd+v すれば verbose mode で起動するはず。)

この verbose mode で通常の起動終了時の様子は分かるようになるが、システムアップデート中は(見せたくないものがあるのか)表示してくれない。(つまんないな)

!Operation not permitted
macOS 自体のセキュリティ保護機能(System Integrity Protection, SIP)が上がったために、terminal で作業していてコレに出会うケースがある。これについては、例えばココ↓などを参照のこと。

[[macOS の「Operation not permitted」を回避する【du/ls/mv/cp 実行時】【Mojave/Catalina 以降|https://qiita.com/KEINOS/items/0366f1c281b574a79cfb]]

作業によってはそれでも駄目なこともあるかも。そのときは、Recovery mode で起動し、terminal で
csrutil disable
して再起動の後に sudo で作業すればいいかも。(SIP が厳しくなっているので macOS の version によって様子が違うと思われる。)なお
csrutil enable
することを忘れぬよう(再起動も含めて)

!/Library/Updates/
security update で使われているディレクトリ

!single user mode (Cmd+s)
みんな大好きな single user mode に入るには、起動時に Cmd+s すればよい。なお、firmware password を掛けてると single user mode には入れない模様。

!system_profiler
システムのあれこれ情報を取得するためのコマンド

例えば、Firmware version ならば
system_profiler SPHardwareDataType | grep Firm
とかすれば得られる

!homebrew で gnu command
自前 build してもよいが、==手抜きで== homebrew を使い gnu なコマンド群を入れる(command 群は /opt/homebrew/ or /usr/local/ 以下に入る)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install coreutils
brew install grep
brew install gnu-sed
brew install gawk
brew install gnu-tar
brew install gnu-time
brew install pstree
brew install tree
BSD な既存コマンドがある場合、混同を避けるためにコマンド名の前に 'g' を付けるルールらしい(例:grep や sed は既存コマンドがあるので ggrep, gsed に。)

brew install awk とすると、macOS 標準の nawk の新しい版(?)が入るっぽい。gawk をインストールするには brew install gawk とすべし(homebrew には awk と gawk の両パッケージが存在する)

注意)昔々、Leopard 時代前後に tar が gnu tar だったり bsdtar だったりしていた時期があった(上↑の方に書いている)BSD系とGNU系は同じ名前の command でも拡張機能部分の動作が違うので注意が必要

!loginhook / logouthook
monterey (12.x) まで使えていた loginhook / logouthook、ventura (13.x) で使えなくなった。多くのユーザを抱えた端末管理をしているところでは頭を抱えるポイント。

!!Loginhook の代替手段 LaunchAgent
/Library/LaunchAgent/ /Library/LaunchAgents/ ディレクトリ内に、ごにょごにょ書いた plist ファイルを設置することで、ログイン時にいろいろ実行させることができる時にユーザ権限で色々実行させることができる

!!Logouthook の代替
これは決定版がなかなか難しいこちらが特に問題。LaunchAgent に対応するようなものは存在しない。(たぶん、色々調べたけど見つけられなかった)

そこで、LaunchAgent
で logout 時のシグナルを受け取る script を走らせれば走らせ、その background script がシグナルを受け取ったところで logout 時の処理をさせれば良かろうと考えた。この方法だと方法、logout 時はうまく動いてくれるが動いてくれて喜んだのも束の間、システム終了時には終了時(shutdown時)には script を実行し終える前にシステムが落ちてしまい塩梅がよろしくない。

苦肉の策として、AppleScript を使って logout 時のシグナルを受け取る「アプリ」を作った。アプリであれば、アプリそのものが終了するまではシステム終了しないので、うまく動作してくれる。(よく見ればシグナルを受け取るアプリが動いているのが見えるので分かるので、いまいちカッコよくないけど仕方ない。