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

読了まで:約5分


いう話。

追記: [[2018-02-05]]

お、このエントリを書いた後、その次の日ぐらいに公開された、 [[macOS Sierra]] をインストールするなどして、 [[Gentoo Prefix]] は使う間もなく消滅しました。

また、 [[macOS High Sierra]] が公開されている 2018 年現在、僕は macOS では [[Homebrew]] を使っています。

ここ数日前ぐらいから、

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

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

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

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

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

基本的には、

  • <https://gitweb.gentoo.org/repo/proj/prefix.git/tree/scripts/bootstrap-prefix.sh https://gitweb.gentoo.org/repo/proj/prefix.git/tree/scripts/bootstrap-prefix.sh>

Download してきて、

$ bash ~/Downloads/bootstrap-prefix.sh

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

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

とか、あるいは、

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

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

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

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

基本的には、

  • <https://gitweb.gentoo.org/repo/proj/prefix.git/tree/scripts/bootstrap-prefix.sh https://gitweb.gentoo.org/repo/proj/prefix.git/tree/scripts/bootstrap-prefix.sh>

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.conf CONFIG_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 関係で質問されてもほぼ判らないと思いますが、何か有りましたら、ブコメ等でお知らせください。

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

アバターアイコン兼ロゴ

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。次に備えて待機中。

今は趣味でプログラミングをして生活しています。