ZSH の最新版をbuildする。
はい、こんにちは。
普段使うプログラムは、出来るだけ最新版なStableなん使いたいですよね!
それなのにCentOSときたら yum
で拾ってくるバージョンは4.3.10!?
いやだ!もっと新しいのん使いたい!
と、いうわけでタイトルです。
あー、Suseたん可愛いですよSuseたん。
パッケージだってなんでもありますよ。
Keepassや、Guakeなんてマニアックでありながら個人的に必須なものだって1Clickインストール出来ますのよ。
しかも出来るだけ新しくてStableなんですのよ。
ノートPCに32bit版を入れればまだまだ戦える、うん。
えー、いきなり話がずれましたが、今回はCentOSでやります。
OpenSuse でも同じ手順で出来ましたので、ご報告までに。
ユーザーシェルを変更する為、念の為にコンソールに直接ログインしておく事。
それかもう一つセッション作成しておく。
あるいはtmux とかscreen で、、、もういいですね(・﹃・)
環境はCentOS6.5 をminimal install している状態です。
全体の流れ
- yodl のビルドの為に
icmake
を作る - yodl のマニュアル作成の為に latex パッケージをインストール
- yodl インストール
- ZSH のビルド
- ログインシェルの変更
- バージョンの確認
- おまけ:最新版のyodl が使いたかったら最新版のGCCを持ってきな!!
順番にやっていきます。
icmake build
yum groupinstall 'Development tools'
yum install git
mkdir src
cd src
git clone git://git.code.sf.net/p/icmake/code icmake
cd icmake/icmake
INSTALL.im を編集すればインストール先を変更出来るぽいけど、よくわかっていないのでデフォルトでいっちゃいます。
./icm_bootstrap /
su
./icm_install strip all /
バージョンの確認
icmake --version
Make Utility Version 7.21.01
Copyright (c) GPL 1992-2014. NO WARRANTY.
yodl build
yodl のソースを拾ってきて、展開して中へ。
実はtar のオプションは、xf
だけでOKなんですって!
gz とかbz2 とか自動判定してくれるんですって!!
wget http://downloads.sourceforge.net/project/yodl/yodl/3.03.0/yodl_3.03.0.orig.tar.gz
tar xf yodl_3.03.0.orig.tar.gz
cd yodl-3.03.0
これもINSTALL.im を編集すればインストール先を変更出来るぽいけど、デフォルトでいっちゃいます。
※ 本当に必要なのはprograms
とmacros
だけです。
./build programs
./build man
# ここで、manual をビルドするのに latex が必要になるのでインストール
yum install latex2html
./build manual
./build macros
su
./build install programs /
./build install man /
./build install manual /
./build install macros /
./build install docs /
完了。
yodl --version
yodl version 3.04.00
ZSH build
いよいよ本番。
git clone git://git.code.sf.net/p/zsh/code zsh
./Util/preconfig
./configure --prefix=/usr/local --enable-locale --enable-multibyte
make clean
make -j 4
su
porg -lD make install
どこにインストールされたのかなーっと。
which zsh
/usr/local/bin/zsh
次にシェル候補に載っているか確認。
無ければ上記アドレスを追加。
vi /etc/shells
ログインShellの変更
root とユーザーの両方に作業が必要。
chsh
root / userFoo のシェルを変更します。
新しいシェル [/bin/bash]: /usr/local/bin/zsh
シェルを変更しました。
ここでログインし直すと変更されている、はず。
バージョンの確認をしてみましょう。
echo $ZSH_VERSION
5.0.7-dev-0
OKですね! お疲れ様でした!!(・∀・)
後はもう、zshrc を好きなだけ弄んでくだされば結構です、はい。
ZSH はデキる子なので調教のしがいがあると思います(意味深
chsh後に「以前使っていた設定ファイルの所有者が実行権が」どうとか怒られてまともにログイン出来ない場合、私の場合selinuxが悪さしていました。
元々ZSH を別ルートで入れていた場合に発生しやすい様です。
もしそうなったら冒頭で述べた通り、別セッションからchsh
で元のシェルに戻してあげて下さい。
慌てる事はありません。きっと、大丈夫です。
きっと。
おまけ
最新版のyodl が使いたかったら最新版のGCCを持ってきな!!
と、いうわけで。
yodl だけGCCを最新の4.9以降にしないとビルド出来ない様になっているわけです。
CentOS6.5 デフォルトのGCC4.47 では、yodl-3.03.0 までしか作れません。
↓ こんなエラーですね。
g++ --std=c++11 -o tmp/install/usr/bin/yodlverbinsert -O2 -Wall -g src/verbinsert/verbinsert.cc
cc1plus: error: unrecognized command line option "-std=c++11"
system - failure of system call (status 256)
ってことで、サクッとGCCをアップデートしてやりましょう。
makeに二時間かけて。
精神衛生上、失敗した時の為にもccache
を仕込んでおくと幸せになれるかもしれない。
GCC バージョンアップ
こっからは全てroot 権限でやっていきます。
わっかりにくいGCC 本家ミラーから、ソースを拾ってきて、伸張しましょう。
そして準備スクリプトが同梱されているのでそれも実行。
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.gz
tar xf gcc-4.9.2.tar.gz -C /usr/local/src
cd /usr/local/src/gcc-4.9.2
./contrib/download_prerequisites
下記パッケージがダウンロードされました。
mpfr-2.4.2.tar.bz2
gmp-4.3.2.tar.bz2
mpc-0.8.1.tar.gz
isl-0.12.2.tar.bz2
cloog-0.18.1.tar.gz
あと、これも。
yum install glibc-devel.i686
yum install gcc-c++.x86_64
ビルド用のフォルダを作らないとトラブるそうな。
mkdir build
cd build
../configure --disable-multilib
# build 以下にMakefileが作成されます。
make -j 4
--disable-multilib
を指定しないと以下のエラーが。
configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.
これでビルドが始まります。
二時間ぐらいかかります(
コーヒーでも飲んでのんびり放っておきましょう。
寝る前に仕掛けるのもいいでしょう。
おはようございます、無事終了していましたか?
ではインストールしてあげます。
paco
もporg
に名前変わったんですねー
porg -lD make install
で、最後に表示されたメッセージが以下。
Libraries have been installed in:
/usr/local/lib/../lib64If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking- use the -Wl,-rpath '-Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
一応再起動しておきましょう。
バージョンの確認
gcc --version
gcc (GCC) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
g++ --version
g++ (GCC) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
って事で、4.47 -> 4.92 にバージョンアップ完了であります。
libstdc++.so.6 を最新版で置き換える。
/usr/lib64/libstdc++.so.6 は、同ディレクトリにある libstdc++.so.6.0.13 にリンクされているので
今回のバージョンアップで作成されたlibstdc++.so.6.0.20 に張り直しておきます。
cd /usr/lib64
cp -p /usr/local/lib64/libstdc++.so.6.0.20 .
ln -s -f libstdc++.so.6.0.20 libstdc++.so.6
yodl の最新版をbuild する!
これで準備は整いました。
wget の代わりにgitリポジトリより最新版ソースを取得して、後は上記手順と同じです。
git clone git://git.code.sf.net/p/yodl/code yodl
-- 略 --
yodl --version
yodl version 3.04.00
お疲れ様でした!(・∀・)ノ