Mountain Lionにrvmでruby-1.8.7を入れる
現状ではrvm経由でMountain Lionにインストールできるrubyは1.9.3しか無いようですが、
1.8.7を使いたい場合は以下のようにすれば良いようです。
- XQuartz をインストール
- 以下を実行
pre>>
CC=/usr/local/bin/gcc-4.2 CPPFLAGS=-I/opt/X11/include rvm install 1.8.7
<<--
See Also:
現状ではrvm経由でMountain Lionにインストールできるrubyは1.9.3しか無いようですが、
1.8.7を使いたい場合は以下のようにすれば良いようです。
pre>>
CC=/usr/local/bin/gcc-4.2 CPPFLAGS=-I/opt/X11/include rvm install 1.8.7
<<--
See Also:
普段はPostgresqlのサイトで配布されているMac用のインストーラを使っているのですが、どうやらLionはまだサポートされていないようです。
ということで、homebrewを使ってインストールすることにしました。
Homebrewをインストール
以下を実行すればok
pre>>
/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
<<--
あとは
pre>>
brew install postgresql
<<--
でインストールし、以下でdbを初期化します。
pre>>
initdb /usr/local/var/postgres
<<--
最後に、自動起動の設定を行います。
pre>>
cp /usr/local/Cellar/postgresql/9.0.4/org.postgresql.postgres.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/org.postgresql.postgres.plist
<<--
brewでインストールした場合、postgresユーザは作成されないようです。
$USERがスーパユーザとして作成されます。
いくつか前のOSアップデートのころから
pre>>
% ping localhost
ping: cannot resolve localhost: Unknown host
<<--
という状態になっていたて原因が分からず放置していましたが、
/etc/hosts の中に IPv6用の設定があるのが原因のようです。
pre>>
::1 localhost
<<--
これをコメントアウトすると正常な動作に戻りました。
bundlerを使ってnative extensionを含むGemをインストールする場合に、
オプションの指定が必要な場合は ~/.bundle/config などを使いますが、
例えば Mac 環境で do_postgres をbundle installするには、以下のように
設定します。
pre>>
BUNDLE_BUILD__DO_POSTGRES:
--with-opt-dir=/Library/PostgreSQL/9.0
--with-opt-include=/Library/PostgreSQL/9.0/include/postgresql/server
<<--
まずはhadoop-0.21.0をダウンロード
/usr/local/hadoop あたりに展開。hadoop-envの設定
$HADOOP_HOME/conf/hadoop-env.sh を開いて JAVA_HOMEを/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Homeあたりに設定。
$HADOOP_HOME/binにPATHを通して
pre>>
% start-dfs.sh
% start-mapred.sh
<<--
でHadoopを起動。0.21.0ではstart-all.shはdeprecatedらしい。
停止は
pre>>
% stop-mapred.sh
% stop-dfs.sh
<<--
注意点として、ssh で localhost にログインできるようにしておく。
"システム環境設定" -> "共有" から、"リモートログイン"にチェックでok
初期化・設定
$HADOOP_HOME/conf/hdfs-site.xmlに以下のような感じで記入
xml>>
<<--
hdfsを初期化。
pre>>
hdfs namenode -format
<<--
mapredの設定
$HADOOP_HOME/conf/mapred-site.xmlの<configuration>の中に以下を記入。
xml>>
<<--
あとは起動して http://localhost:50070 あたりを見ると状態を確認できます。
Mac OS環境ではRiakをbrew install riak でインストール出来ますが、
Xcode4が入っている環境ではコンパイルエラーが発生して上手くいかないようです。どうやらllvm-gccが使われてるのが原因らしい。
以下のように--use-gccで強制的にgccを使うようにすれば良さそうです。
pre>>
<<--
まずはPostgreSQLをこの辺からDLしてインストールします。
インストール先のディレクトリはデフォルトでは/Library/PostgreSQL/9.0 になります。
pg gemをインストールするには、以下のようなコマンドを実行。
pre>>
% gem install pg -- --with-opt-dir=/Library/PostgreSQL/9.0
<<--
これでok
の回避方法。
freetypeの最新バージョンをソースからインストールして、
.zshrcあたりに以下を設定
sh>>
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
<<--
prefix=/usr/localを想定。
MacOSのバージョンアップが原因で発生するようになったらしい。
64bit版で使用するには qemu-system-x86_64 を使う。
以下、オプション
-redir tcp:10022::22 でゲストOSのポート22をホストOSのポート10022にリダイレクトする-nographic GUIを使用しない。-vnc :1 などを指定する必要あり残念ながら現時点のSVNのtrunkを使っても、SnowLeopardにValgrindをインストールしようとすると configure時にエラーが出ますが、以下のパッチをあてることでインストールできるようになるようです。
方法:
pre>>
% svn co svn://svn.valgrind.org/valgrind/trunk -r 11100 valgrind
% cd valgrind
% wget "http://bugsfiles.kde.org/attachment.cgi?id=36999" -O thepatch
% cat thepatch | patch -p0
% ./autogen.sh
% ./configure
% make
<<--
これでokです。
めもめも。
MacPortsでステキなUNIXツールをインストール
http://d.hatena.ne.jp/hakobe932/20061208/1165646618
###portを最新に+ソフトウェア一覧を更新。
shell>>
sudo port -d selfupdate
sudo port -d sync
<<--
###一覧
shell>>
port installed
<<--
###インストール
shell>>
sudo port -v install php5 +apache2
<<--
via http://javaflavor.cocolog-nifty.com/blog/2007/07/macportsapache2_43a4.html
*「ruby +mactk」と「ruby +mactk +thread_hooks」は別物として認識されるので、「ruby +mactk」をインストールした後に「thread_hooks」を追加する場合、「ruby +mactk」をアンインストールまたは無効化する必要がある。
http://oamaxa2.u-abel.net/wordpress/?p=30
MacOS 10.6 カーネルパニックとの戦いのメモ。
Macbook Proを使っていますが、カーネルパニックでグレーアウトする現象が頻繁に起きるようになったため、OSのインストールディスクに同梱されているApple Hardware Test(AHT)を試そうと思ったのですが、SnowLeopardのアップグレード版のインストールディスクにはAHTが同梱されていない事がわかりました。
各所で解説されている「F2を押しながら起動」、「インストールDVDを入れてDキーを押しながら起動」してもユーティリティを起動する画面にならず、最終的にoptキーを押しながら起動し、起動ドライブとしてDVDを選択するということでユーティリティの選択ができるようになりました。
しかし、メニューバーに表示された"ユーティリティ"メニューの中にAHTを示すものはなく、アップグレード版のSnowLeopardではどうすることもできないようです。
幸いそれほど遠くない場所にGenius Barがあったので、明日いってみようと思いますが、近くになかったとしたら悲しいですね。
zshの環境変数を設定する場合はzshrcなどに記述すれば良いのですが、GUIアプリケーションを制御するために環境変数を設定する必要がある場合には、
以下のように ~/.MacOSX/environment.plist ファイルに設定を記述する必要があるようです。
~/.MacOSX/environment.plist
xml>>
<<--
設定を反映させるためには、一度ログアウトしてログインしなおす必要があります。
ちょっと調べたところMacにはミドルクリックと言う概念がないらしい。標準で Doshboardが開きだす。うーさすがちょっと前までマウスが1ボタンだった文化だ。もとWindows害的に面倒なんでなんとかしてみた。
基本は、middleclickをcmdキー+rightクリックに変換すればいいらしい。Logicoolのマウスとかは独自のユーティリテーで変更できるみたい。が、残念ながらー今無名1000円マウスしかないので、多分これは使えない。
そこでSynergy。基本的に2代以上のPCのキーボードとマウスを共有するためのソフトなんだけど。キーストロークの変更機能とかついてるんで、それを利用する。(この時点で大半の人には無用のポストだなw)
キーボードとマウスはWindowsについでサーバーにする。
コンフィグのGUIのHot Keysをクリック。
左側の+をクリックして出てきたダイアログでミドルクリックを押す。
右側のアクションの+を押して、同様のダイアログでMac側でcmdに当たるキーを押しながらright click。
OK.終了。
Hot keys: mousebutton(2)
Action: A mousebutton(Super+2)
とかなってると思う(Superの部分は違うかも)。
まぁこれで、FirefoxだろうがSafariだろうがリンクを新規タブで開ける。
はぁ、ここにたどり着くまで、かなり苦労したんだけど。純正マカーの人とかはどうしているんだろう?
Snow LeopardでMySQLの64-bitバイナリのインストールまではメモなしでできてしまうけど、その後のmysql gemのインストールするためのおまじないはなかなか覚えられないからメモ書きする。
shell-unix-generic>>
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
<<--
なぜARCHFLAGSが必要かというと、gem installする時に32-bitと64-bit両方に対応するgemをビルドしようとするけど、mysqlのバイナリは64-bitのみ(つまりUniversalじゃない)からARCHFLAGSでx86_64を明示的に指定しないとビルドが失敗する。mysql gemは例外的なケースらしいから、tmtmさんに早く直してほしいな。
事前にパスの調整をする。Macでは 、/etc/pathsで定義した方が楽だ。どのシェルを使っても、デフォで入るパス設定だ。以下のようにするといいかな。
shell-unix-generic>>
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
<<--
パスがこうなる:
shell-unix-generic>>
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/X11/bin
<<--/usr/X11/binが/etc/paths.d/X11から設定されている。詳しくはman path_helperで。
MacではReadlineのかわりにBSD系Editlineを使っているけど、これは日本語などとの相性が悪くいためMac標準のRubyのirbが使いものにならない。なので、まずは最新のReadlineを入れる。
shell-unix-generic>>
curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.0.tar.gz
tar xzf readline-6.0.tar.gz
cd readline-6.0
./configure --enable-multibyte --enable-shared
make
sudo make install
<<--
Readlineの用意ができたら、Rubyを入れる。Ruby 1.9でもいいけど、まだ自信がないので1.8.7にする。
shell-unix-generic>>
curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
tar xzf ruby-1.8.7-p174.tar.gz
cd ruby-1.8.7-p174
./configure --enable-shared --enable-pthread --with-readline-dir=/usr/local CFLAGS=-D_XOPEN_SOURCE=1
make
sudo make install
<<--
しめとしてRubyGems
shell-unix-generic>>
curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-1.3.5.tgz
tar xzvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
sudo /usr/local/bin/ruby setup.rb
<<--
はい、カンタンですね。これくらいなら、まだまだMacPortsは要らない。
今朝Snow Leopardにアップデートしたら、デフォの設定でイーモバイルがうまく動作しないけど、環境設定の「ネットワーク」→「詳細」で以下の設定をしたらちゃんと接続できました。

USBモデムD23HWを使っています。他の機種が上手いくかどうかわからないけど….
At first, you download files of Collada from here
http://sourceforge.net/projects/collada-dom/
It includes collada-dom, but you must build it before using.
To build the package, you must unpack the zip and move to dom/ directory. And
pre>>
% make
% make install
<<--
That's all.
Linuxとかではlddコマンドが使えますが、MacOSでは
pre>>
% otool -L
<<--
とすれば良いようです。
To reduce consumption of papers, I investigated way to print both sides of paper on MacOSX.
Be careful of the flow of from even number pages to odd number pages.
If you do oppositely, sometimes you would get the out of order result.
This can be used with layouts that have 2 or more pages a paper.
最近の釣果ならぬYak Shaving状況:
ということで、MacOSにPostgresを入れるためにユーザを作成する手順のメモ。
pre>>
<<--
UID/GIDの根拠は自信が無い。UIDは500未満にしておくとログイン画面にでないようになるそうだ。
Alas, life is full of yakshaving!
See Also
Skitchはスクリーンショットをとったり、図を描いたり、
画像形式を変換したりと、非常に便利な画像処理ツールで、
愛用しています。
コマンドラインからSkitchを起動出来たら便利だな、
と思って試したら、すんなり出来たので紹介します。
pre>>
% /Applications/Skitch.app/Contents/MacOS/Skitch foo.png
<<--
こんな感じでOK。convertコマンドの代わりになるかも。
Macの開発環境にEC2 ami toolsを入れる手順のメモ。
今回はmacportsのrpmを使ってインストールしました。
pre>>
% wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
% sudo rpm -i ec2-ami-tools.noarch.rpm --nodeps --ignoreos
<<--
これだけです。
あとは、.zshrcなどで、RUBYLIB環境変数に/usr/lib/site_rubyを加えておきます。
See Also
portを使っていて以下のようなエラーが出たので、対策を調べてみました。
pre>>
Unable to execute port: can't read "frameworks_dir": no such variable
<<--
Mac OS Xで(も)tamarinのabcdump.asからabcdump.exeを作る
これはports自身を更新することで、解消ができました。
ということで、以下のコマンドでportを更新。
pre>>
% sudo port -v selfupdate
% sudo port -d sync
<<--
これでエラーが出なくなりました。
Mac(OS X10.5)のTerminal.appでサーバ作業とローカル作業を並行しているとセッションが切れて泣けることがある。これはクライアント側からポーリングしてやることで解決できる。
http://d.hatena.ne.jp/omoon/20061109/1163069683を参照。
ローカルの~/.ssh/configに以下を書き込む。
ruby>>
ServerAliveInterval 300
<<--
参考:http://blog.livedoor.jp/farend/archives/609528.html
Mac OS X用のNetBeans 6.5でSubversionにコミットするとき、ログメッセージに日本語が含まれていると下記のエラーが表示されて失敗します。
Commit failed (details follow):
Can't convert string from native encoding to 'UTF-8':
~/.subversion/config に下記の設定を追加してNetBeansを再起動すると、ログメッセージに日本語を使っても問題なくコミットできるようになります。
log-encoding = utf8
GitX
は、MacOSXで使えるGit用のGUIツールです。

基本的にはCUIで操作してるのですが、
これを使うとブランチのマージの様子などが視覚的に追えて便利。
アバター画像はメールアドレスから
gravatar経由で持ってきてるんですね。
賢い。
See Also
先日に参加したRailsイベントでfishというものを紹介してもらった。zshやbashのようにUnixで使うコマンドシェルですが、fishのフルネーム(Friendly Interactive SHell)からもわかるように、使いやすさと対話的な利用を目的としている。以下の特徴があるらしい:
help打ったらブラウザが起動する)Mac OS Xでインストールするには:
shell-unix-generic>>
% sudo port install fish
<<shell-unix-generic
Mac OS Xでfishにchshしたければ、/etc/shellsにfishを追加しなければならない。
shell-unix-generic>>
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/opt/local/bin/fish
<<shell-unix-generic
使ってみるとこんな感じ:


helpでw3mが起動する
funcedでビルトインの実装をみる(インデント、シンタクスハイライトあり)
manもスマートに補完されている
今までは正直zshやbashのほとんどの機能を使っていませんし、しばらくはfishにchshしてメインシェルとして使ってみることにする。
I made a SIMBL plugin
for Terminal.app which enable us to copy on selection.
Here is the plugin named TerminalCopyOnSelect.
TerminalCopyOnSelect.bundle.zip
INSTALLATION
You're done!
Now you can get copied selected text from the terminal when you released mouse button on it.
You are also able to disable this feature by turning off the following menu "Copy On Select".

Finally, I opened the source of this plugin on the GitHub
under the MIT license.
Enjoy!
MacOSXのTerminal.appで、選択をした時に、
自動的に選択した文字列をコピーするSIMBLプラグイン
TerminalCopyOnSelect
を作ってみました。
TerminalCopyOnSelect.bundle.zip
インストール方法
~/Library/Application Support/SIMBL/Plugins/の下にコピーします。これでOKです。
一時的にこの機能をオフにする場合は、
以下のようにメニューから「Copy On Select」をオフにしてください。

オンに戻せば再び有効化されます。
追記
ソースコードをGitHubで公開しました。
MITライセンスという事でお願いします。
自分用メモをかねて。
debianを使ってる時は、
pre>>
% netstat -l -n -p | grep 4000
<<--
のような感じで調べていたのですが、MacOSXだとnetstatの挙動が微妙に違うようで、うまく調べられなくて困っていた所、shachiさんから教えてもらった方法を紹介します。
pre>>
% lsof -i :4000
<<--
こんな感じにlsofコマンドを使うと、ポート4000をListenしているプロセスを調べる事ができます。
Update
もうちょっと詳しく知りたい場合は、
pre>>
% lsof -n -P -i :5000
<<--
こんな感じのオプションを追加すると良い感じです。
今までMac OS XのTerminal.appでGNU Screenのスクロールバックバッファーをマウスで操作できなかったけど、やっと設定方法がわかった。
.screenrcに下記の設定を追加すればスクロールできるようになる。
shell-unix-generic>>
termcapinfo xterm* ti@:te@
<<shell-unix-generic
これでコピーモードを使わなくて済む! 便利。
macにスイッチしたのですが、娘がmacでお絵描きをする場合何がいいのかしら。
Skitchはちょっと違うし...と思っていたらtechnohippyさんのtwtに出くわしました。
@technohippy: Macでフリーの画像処理ツールが見つからなかったのでAviary使ってみた。さすがに重いけどすごいな、これ
Araiary、これすごいですね。難しそうな気もするけど、そうでもない気もする。
今度娘に使わせてみよう。
Macのtopコマンドはdebianのものと違って、Shift+Mではメモリの使用量によるソートができませんでした。
Macの場合は、
pre>>
% top -orsize
<<--
のように、オプションを指定して起動するか、
topが起動している状態で、oキーを押してから、rsizeと入力すると良いようです。
RSIZEというカラムが使用しているメモリの量を表しています。
現時点では(version 0.3.1)、macirbを使うときは、LANG=C
で利用する必要があるようなので、以下のようにzshrcでaliasを登録してみました。
~/.zshrc
sh>>
alias macirb='LANG=C macirb'
<<--
これで特に問題なくmacirbを使う事ができます。
ちなみに、require "nkf"をしているRubyスクリプトを
macrubyで実行する場合も、同様にLANGをCにする必要があるようです。
See Also
LeopardでGNU screenを使っているとき、以下のような
エラーメッセージが出てくることがあるようです。
pre>>
****** Returning nil _server **********
<<--
これはLeopardに付属している/usr/bin/screenに当たっているパッチの影響であるらしく、Macports版のGNU screenを使えばこの問題は発生しないようです。
まだMacの起動スクリプトのことをなんと呼べばいいのかわからないのですが、
とりあえずなくて困ったので、
HyperEstraier用の起動スクリプトを作ってみました。
hyperestraier.plist
xml>>
<<--
plistファイルの中で指定されているhyperestraier.wrapper
は以下の通り。
sh>>
!/bin/sh
prefix=/opt/local
Start()
{
if test ! "netstat -a -n | grep 1978"; then
rm -f /opt/local/var/run/hyperestraier/_pid
fi
/opt/local/bin/estmaster start -bg /opt/local/var/run/hyperestraier
}
Stop()
{
/opt/local/bin/estmaster stop /opt/local/var/run/hyperestraier
}
Restart()
{
Stop
Start
}
Run()
{
case $1 in
start ) Start ;;
stop ) Stop ;;
restart) Restart ;;
) echo "$0: unknown argument: $1";;
esac
}
Run $1
<<--
macportsで入れたmysql5-develの起動スクリプトを元にしているので、
ディレクトリ構成などがmacports的になっています。
あなたは今までにインストールしたMySQLの数を覚えているだろうか。
何度となくインストールしてきたMySQLですが、
Macの場合は、いくつもインストールする方法があるので、
どれが良いか迷いました。
@shachiさんにアドバイスをいただいて
パッケージ版をインストールしてみたのですが、
Macports版のmysql5-develも捨てがたく、
結局mysql5-devel+GUI Toolsという構成に落ち着きました。
Macportsからインストールした場合、/opt/local
以下にインストールされるので、以下のようにシンボリックリンクを
作成しました。
だいたいこんな感じです。
非常に快適になりました。
See Also
追記
なぜか不思議なことに、Macを再起動すると、/var/run/mysqld
に作成したシンボリックリンクが消えてしまうことがわかりました。/private/var/run/mysqldにしてみるなど、
いろいろ試してみたのですが、
結局再起動するとなくなってしまいます。
何が原因なのかまだわからないですが、
とりあえず対処療法として、mysqlの起動スクリプトでシンボリックリンクを作成するようにしてみました。
/opt/local/etc/LaunchDaemons/org.macports.mysql5-devel/mysql5-devel.wrapper(抜粋)
sh>>
Start()
{
ln -s -f /opt/local/var/run/mysql5 /private/var/run/mysqld
/opt/local/share/mysql5/mysql/mysql.server start
}
<<--
これでひとまず大丈夫になりました。
しかし再起動するとシンボリックリンクが無くなってしまうというのは不可解ですね。きっと何か理由があるんでしょうけれど。
Macportsでインストールしたzshは、通常/opt/local/bin/zsh
にありますが、これをchshしようとすると、無情にも
pre>>
chsh: /opt/local/bin/zsh: non-standard shell
<<--
と言われてしまいます。
どうやらMacにはstandard shellというものがあるらしく、
それは/etc/shellsファイルで指定されているようです。
そこで、'/etc/shells'ファイルにMacportsからインストールした
zshのPATHを追加してあげることにします。
/etc/shells
pre>>
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/opt/local/bin/zsh
<<--
これでOk。あとはchshするだけです。
先日ようやくMacを購入する踏ん切りがついたので、
銀座のAppleストアまで妻とMacbook(黒)を買いにいってきました。
Mac miniを買ったのがあったのですが、
本格的にMacを使うのは初めてといって良い感じです。
いろいろ環境構築しているところですが、
Spacesが非常に便利ですね。
@shachiさんから教えてもらった夏らいおんも非常にいい感じです。
いくつかわからない所のメモ。
http://drnicwilliams.com/2008/06/18/what-is-gitjour-gemjour-starjour/
USではRailsCampという合宿みたいな、田舎で数日籠ってhackして遊んだりなんかするというのが流行しているようですが、田舎ではインターネットがないことも多く、それで共同作業したりなんかするのに困ったという経験からいろいろツールが出てきたみたいです。
インストールの手順(必要なgemとか)はDrNicのサイトにありますので、そちらを参照してくださいね。
###始まりはBonjour(Macの通信プロトコル)のオープンソース化
http://en.wikipedia.org/wiki/Bonjour_(software)
###gitjour
Chad Fowlerさんたちが作ったこのツール、ローカルでgitリポジトリを共有するツールです。
http://github.com/chad/gitjour
###pastejour
今度はJohn Barnetteさんが作ったpastejour。これはInternet(pastie)がなくても、コードのsnnipetを送れる仕組み。
http://github.com/jbarnette/pastejour
###gemjour
さらにEvan Phoenixさんが、gemのサーバ機能を提供。誰かのローカルにあるgemを取ってこれるようになります。
http://github.com/evanphx/gemjour/tree/master
###appjour:Macオンリー
Lachie Cox作。appをみんなで共有できます。
http://github.com/lachie/appjour
###dejour:Macオンリー
Aaron Patterson作。Growl(Macの通知バルーン?)の仕組みを使った、ローカルネットワークでtwitterみたいな感じ?のようです。
http://github.com/aaronp/dejour/tree/master
###stajour:Macオンリー
Lachie Cox作。上の通知を一覧にして表示できるアプリ。
http://github.com/lachie/starjour
最後のほうはMacオンリー。残念です...
あとあと、USのギークたちはみんなでGuitar Hero3やったりするみたいですね...