ターミナルの中で一日を過ごす人種としては、UNIX環境を整えることは至上命令だ。
OSXのパッケージ管理システムで代表的なのは、MacPortsとFinkだろう。ぼくは今までMacPortsを使ってた。MacPortsは実質的に公式なパッケージ管理システムだと思うし、パッケージ数も多い。だけど、定番すぎるので、前から気になってたGentoo for Mac OS Xを導入してみようかと思う。あえて困難な道を行く。ヘラクレスの選択と言えば聞こえはいいが、ようするにマゾなんだろう。
Gentoo for Mac OS Xは昔PowerPC時代にチャレンジして玉砕したまま放置してたんだけど、久しぶりにプロジェクトページ見たら、なんかもう開発止まってるの?
と思ったら、Prefixプロジェクトってのがあるらしい。
Gentoo-Alt TLP に Prefix プロジェクトがあります。GPM/Ports System はアーキテクチャ、カーネル、ライブラリ、ユーザランド、ライセンス、etc. 様々な組み合わせを可能にしますが、Primary Package Manager として構築する必要があります。稼働中の BSD, Mac OSX, Solaris, Fedora Core, Ubuntu, et al. は既に別の Primary Package Manager を所有しています。prefix は root 権限が不要で衝突する事無くメタ・ディストリビューションを可能にする Secondary Package Manager として利用可能にするための実験です。少しややこしいのですが「root が使う Secondary」「user に開放された Primary」に加え「user に開放された Secondary」も含みます。bootstrap と prefix-overlay があります。
prefix - GentooJP
なんかすげー期待できそう。ぼくはサーバをGentoo Linuxで運用してるんだけど、Gentooのパッケージ管理システムのPortageこそ最強だと思う。
Portageについては以下のドキュメントを参照。
http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=2
そして、Gentoo PrefixのMac用のセットアップドキュメントはここ。
http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-macos.xml
残念ながら日本語のドキュメントは見つからなかったんだけど、コードリストを上から下まで丁寧にコピペしていったらなんか上手くいったみたい。相変わらずGentooのドキュメントのクオリティは高いなぁ。
ちょっとした手違いで2回セットアップする羽目になったのと、新しいMacBook買ったらどうせ同じ作業やらなきゃなので、未来の自分のためにもスクリプト化しておいたので貼っておく。実行するにはXcodeのインストールが必要。
setup-prefix.sh
#!/bin/bash
USE="unicode nls pcre bzip2"
CFLAGS="-O3 -pipe -march=prescott" # CoreDuo
# CFLAGS="-O3 -pipe -march=nocona" # Core2Duo
export EPREFIX="$HOME/Library/Gentoo"
export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:$PATH"
curl -o /tmp/bootstrap-prefix.sh http://overlays.gentoo.org/proj/alt/browser/trunk/prefix-overlay/scripts/bootstrap-prefix.sh?format=txt
chmod 755 /tmp/bootstrap-prefix.sh
/tmp/bootstrap-prefix.sh $EPREFIX tree
/tmp/bootstrap-prefix.sh $EPREFIX/tmp wget
/tmp/bootstrap-prefix.sh $EPREFIX/tmp sed
/tmp/bootstrap-prefix.sh $EPREFIX/tmp python
/tmp/bootstrap-prefix.sh $EPREFIX/tmp coreutils6
/tmp/bootstrap-prefix.sh $EPREFIX/tmp findutils
/tmp/bootstrap-prefix.sh $EPREFIX/tmp tar15
/tmp/bootstrap-prefix.sh $EPREFIX/tmp patch9
/tmp/bootstrap-prefix.sh $EPREFIX/tmp grep
/tmp/bootstrap-prefix.sh $EPREFIX/tmp gawk
/tmp/bootstrap-prefix.sh $EPREFIX/tmp bash
/tmp/bootstrap-prefix.sh $EPREFIX portage
rm -rf /tmp/bootstrap-prefix.sh
export LDFLAGS="-Wl,-search_paths_first -L${EPREFIX}/usr/lib -L${EPREFIX}/lib"
export CPPFLAGS="-I${EPREFIX}/usr/include"
hash -r
emerge --oneshot sed
emerge --oneshot --nodeps wget
emerge --oneshot bash
emerge --oneshot --nodeps baselayout-prefix
emerge --oneshot --nodeps flex
emerge --oneshot --nodeps binutils-config
emerge --oneshot --nodeps odcctools
emerge --oneshot --nodeps gcc-config
emerge --oneshot --nodeps gcc-apple
unset LDFLAGS CPPFLAGS CHOST CC CXX HOSTCC
emerge --oneshot coreutils
emerge --oneshot findutils
emerge --oneshot tar
emerge --oneshot grep
emerge --oneshot gawk
emerge --oneshot patch
emerge --oneshot make
env FEATURES="-collision-protect" emerge --oneshot portage
rm -Rf $EPREFIX/tmp/*
hash -r
emerge --sync
emerge -u system
echo "USE=\"$USE\"" >>$EPREFIX/etc/make.conf
echo "CFLAGS=\"$CFLAGS\"" >>$EPREFIX/etc/make.conf
echo 'CXXFLAGS="${CFLAGS}"' >>$EPREFIX/etc/make.conf
echo 'MAKEOPTS="-j4"' >>$EPREFIX/etc/make.conf
emerge -e system
cd $EPREFIX/usr/portage/scripts
./bootstrap-prefix.sh $EPREFIX startscript
最初の数行にあるUSEフラグとCFLAGSとEPREFIX辺りは適宜調整する必要があると思う。
CPUフラグは、Core2Duoな人は-march=noconaって指定すればいいらしい。良くわからなかったら-march=i686とでもしておけばセーフティかも。EPREFIXはようするにインストール先のことだね。$HOME/Gentooとか$HOME/Library/Gentooが推奨されてるみたいだけど、ホームディレクトリ直下には入れたくない気分だったので、ぼくは$HOME/Library/Gentooを選択した。
MacPortsと同時に使うこともできるし、たぶんこのスクリプト一発で導入できると思うから、気軽に試してみて欲しい。セットアップ終了後、$EPREFIX/startprefixを実行したら、さぁ! Gentooの世界へ飛び出そう!
ちなみに、ぼくのマシンだと3時間半くらいかかったので、寝る前にでもどうぞ。