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

カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

Gentoo Prefix を OS X El Capitan に三日かけて導入した

という話。


ここ数日前ぐらいから、

OS X El Capitan のパッケージマネージャ、 pkgsrc + pkgin から変えるかなー

と思って、色々モノを物色して、最終的には、

よし、 Gentoo Prefix (Portage) を構築してみよう!

と成り、実際にこの環境を構築したんですが、色々とトラブルったというか、 一筋縄では全然インストールが出来なかったので、今日はその辺り、 後に再構築する時になっても困らないように、何をどうしたか、をまとめておきます。

1. OS X El Capitan で Gentoo Prefix を導入する手順 (理想)

基本的には、

を Download してきて、

$ bash ~/Downloads/bootstrap-prefix.sh

して、設定を入力すれば OK …… なんだけれども、実際には、色々トラブルと言うか、

パッケージがコンパイル出来ねー

とか、あるいは、

file collision が見付かってインストール出来ねー

とか良く有るので、その辺りを一個ずつ解決する必要が有ります。

2. OS X El Capitan に Gentoo Prefix を導入する方法 (実際)

まず、基本は上記と一緒で、

基本的には、

を Download してきて、

$ bash ~/Downloads/bootstrap-prefix.sh

します。が、順調にトラぶるので、その辺りを解決しつつ、インストール作業を進めます。

1. stage2 で sys-devel/binutils-apple がコンパイル転ける

これは、$EPREFIX/tmp/etc/portage/package.mask で、

>=sys-devel/binutils-apple-7.0

と言う感じで、mask すればなんとかなる

2. stage2 で llvm-3.4.2 の アーカイブが Download 出来ない

$EPREFIX/tmp/usr/portage/sys-devel/llvm-3.4.2.ebuild

clang? ( http://llvm.org/releases/${PV}/compiler-rt-3.4.src.tar.gz
                http://llvm.org/releases/${PV}/cfe-${PV}.src.tar.gz )

を、

clang? ( http://llvm.org/releases/${PV%.*}/compiler-rt-3.4.src.tar.gz
                http://llvm.org/releases/${PV%*}/cfe-${PV}.src.tar.gz )

と言う感じに直す。なお上記スニペットは GPLv2 な ebuild ファイルからの引用である。

3. stage2 で bash が file collision してインストール出来ない

まず、 file collision の元になっている、

  • $EPREFIX/bin/bash

を消す。

次に$EPREFIX/bin/egrep の shebang を、

#!/bin/sh

と言う感じで OS X El Capitan のシステム の /bin/sh を使う様にした後、 $EPREFIX/etc/portage/make.confCONFIG_SHELL を一時的に、

CONFIG_SHELL="/bin/bash"

という感じで これもまた OS X El Capitan のシステム の /bin/bash を使う様にする

4. stage3 の wget のコンパイルが転ける

$EPREFIX/etc/portage/package.mask

=net-misc/wget-1.18

を取り敢えず mask 。

5. stage3 で nano が (ry

これも$EPREFIX/etc/portage/package.mask

=app-editors/nano-2.6.3

を mask 。

6. stage3 の sys-apps/baselayout-prefix が file collision

これは、bootstrap-prefix.sh が、

  • $EPREFIX/sbin/openrc-run

を作っているのが原因なので、bootstrap-prefix.sh の該当部分である

        if [[ ! -x "${ROOT}"/sbin/openrc-run ]]; then
               echo "We need openrc-run at ${ROOT}/sbin to merge rsync." > "${ROOT}"/sbin/openrc-run
               chmod +x "${ROOT}"/sbin/openrc-run
        fi

をコメントアウトし、かつ $EPREFIX/sbin/openrc-run を削除する。

なお、上記スニペットは GPLv2 な bootstrap-prefix.sh からの引用であり、 また問題の上記の処理部分は bootstrap_stage3 関数の中に有ります。

7. stage3 で llvm-3.8.1 のコンパイル中に Segmentation Fault

これは、stage3 に至るまでの間にインストールされる、

  • llvm-3.5.2

が原因なので、これを一旦、

$ $EPREFIX/bin/emerge -u =sys-devel/llvm-3.4.1

という感じで llvm-3.4.1 に下げた後、llvm-3.8.1 まで上げるとなんとかなる

以上

という感じで結果として 7 つの関門さえクリア出来れば、

  • Gentoo Prefix on OS X El Capitan

は実現します。

ただしコレ、試行錯誤するのに結構時間かかったし、また、今後の導入時期によっては、 他のパッケージが壊れてたり、あるいは今回の問題が解決している場合も有る得るので、 その辺りはまあ、当って砕けろ! と言うか、かなり行き当りバッタリにならざるを得ない感じです。

そのため、

  • Gentoo Prefix

を導入したい! という場合には、かなり時間に余裕が有るときにのみ行なうようした方が良いかと僕は思います。 そうでないと、下手すると、今回の僕の様に三日ぐらいは他の作業が止まる可能性が有るので。

ま、とりあえず今は Gentoo Prefix を導入しただけの段階なので、 Terminal 上で人権を得られるにはまだまだパッケージの導入やらしないといけないのですが、 それはまあ今後ボチボチと行なっていきたいと考えています。


という事で今回の記事は以上です。

まあ、ぶっちゃけ僕も Gentoo Prefix で初めて Portage を触っているので、 Portage 関係で質問されてもほぼ判らないと思いますが、 何か有りましたら、コメント欄でお知らせください。

という訳で以上です。はい。