読者です 読者をやめる 読者になる 読者になる

Gentoo PrefixをMac OS X 10.8(Mountain Lion)にインストールする

ふと思い立って、Gentoo PrefixをMacにインストールしてみました。
環境は、OS X 10.8 Mountain Lionです。

Gentoo Prefixとは、こういうものです。
http://www.gentoo.org/proj/ja/gentoo-alt/prefix/

公式によると、インストールは簡単なようで、シェルスクリプトを実行するだけのようです。
しかし、これがstage1からstage3という段階に別れているのですが、stage3で止まります。
そして、調べてもなかなか情報がありません。

そこで、苦戦して得られた結果を書いておきます。
ただ、うろ覚えなので間違っているかもしれませんが、悪しからず。

まずは、stage2までは、bootstrap-prefix.shにやってもらいます。
そこで、stage3で止まったところから始めます。

なぜ止まったかを見ると、unknown gccとか言ってます。
正しいかは分かりませんが、Xcodeでインストールしたgccが、Xcode 4からLLVMになった
http://blog.fenrir-inc.com/jp/2011/07/llvm.html
のが原因だと思います。
なので、正しいgccをビルドするのが当面の目標です。

とりあえず、このサイトを参考にします。
http://wiki.areverie.org/gentoo-prefix
stage2までは終わっているはずなので、stage3からこれに従って行きます。

始めに、
export EPREFIX="(Gentoo Prefixをインストールする場所の絶対パス)"
export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:$PATH"
export CHOST="x86_64-apple-darwin12"
 を実行します。
CHOSTは、Mountain Lion向けの物で、Lion以前の人は、
http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-solaris.xml
で確認して下さい。

とりあえず、後のためにちょっと細工をします。
まず、Homebrewでxz, md, apple-gcc42をインストールしておきます。
そして、
cp /usr/local/bin/md $EPREFIX/usr/bin
ln -s /usr/local/bin/xz $EPREFIX/bin
ln -s /usr/local/bin/gcc-4.2 $EPREFIX/bin
これで細工は終わりです。

次に、サイトに従い、
emerge --oneshot sed
emerge --oneshot pax-utils

emerge --oneshot --nodeps wget
emerge --oneshot --nodeps baselayout-prefix

# xz-utilsをインストールしたら、リンクを削除
emerge --oneshot --nodeps xz-utils
rm $EPREFIX/bin/xz

emerge --oneshot --nodeps m4
emerge --oneshot --nodeps flex
emerge --oneshot --nodeps bison
emerge --oneshot --nodeps binutils-config

emerge --oneshot --nodeps binutils-apple
emerge --oneshot --nodeps gcc-config
emerge --oneshot --nodeps gcc-apple

# 同様にgccのリンクも削除
rm $EPREFIX/bin/gcc
bashは確か飛ばして大丈夫なので、書いてません。
もしダメだったら、
emerge --oneshot --nodeps bash
して下さい。

ここまで来ると、もう文句は言われないはずなので、再度
./bootstrap-prefix.sh
スクリプトに任せます。

途中、findutilsのビルドでコケますが、これはどうしようもないので、maskしてしまいます。
$EPREFIX/usr/portage/profiles/package.mask に以下を書き加えます。
=sys-apps/findutils-4.5.12
これで、もう一度 bootstrap-prefix.sh を走らせれば、最後までブートストラップが完了するはずです。
ひたすら待ちましょう。

以上です。