root 権限がなく、ビルドツールもインストールされていない環境でビルド環境を整える
CentOS 6 で git, zsh, tmux 等をビルドしたいけど、root 権限もなければインストールされているコンパイラは cc だけ…、というようなケースでビルド環境をそろえる方法。
0. 想定しているケース
1. yumdownloader (yum-utils) のインストール
yumdownloader (yum-utils) が入っていなければインストールする。
$ type yumdownloader >/dev/null 2>&1 || (mkdir ~/local; cd ~/local && releasever=$(head -n1 /etc/issue | perl -ne '/\b(\d+(?:\.\d+))\b/; print $1;') && wget -qO - "http://ftp.sakura.ad.jp/pub/linux/centos/${releasever}/os/$(uname -i)/Packages/yum-utils-1.1.30-14.el6.noarch.rpm" | rpm2cpio | cpio -id && ./usr/bin/yumdownloader --version)
2. ビルドツールのインストール
上記 1 で yumdownloader をインストールした場合は事前にパスを通しておくか、以下の各コマンドを置き換える。
$ mkdir ~/local; cd ~/local $ yumdownloader $(repoquery --resolve --requires gcc gcc-c++ kernel-headers autoconf automake binutils libtool make bison gettext pkgconfig | sort -u) $ find -maxdepth 1 -name '*.rpm' -print0 | xargs -0 -n1 -I '{}' sh -c 'rpm2cpio {} | cpio -id'
3. 環境変数を設定する
ビルド時に設定されていれば良いので、シェルの設定ファイルに記述する必要は特にない。
$ export LOCAL_ROOT="${HOME}/local" $ export PATH="${LOCAL_ROOT}/usr/bin:$PATH" $ export LD_RUN_PATH="${LOCAL_ROOT}/lib64:${LOCAL_ROOT}/usr/lib64" $ export LDFLAGS="-L${LOCAL_ROOT}/lib64 -L${LOCAL_ROOT}/usr/lib64 -R${LD_RUN_PATH}" $ export CPPFLAGS="-I${LOCAL_ROOT}/usr/include"
4. ビルド
後は普通にビルドを行うだけ。