10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ZSH の最新版をbuild したいぞー

Last updated at Posted at 2014-11-27

ZSH の最新版をbuildする。

はい、こんにちは。
普段使うプログラムは、出来るだけ最新版なStableなん使いたいですよね!
それなのにCentOSときたら yum で拾ってくるバージョンは4.3.10!?
いやだ!もっと新しいのん使いたい!

と、いうわけでタイトルです。

あー、Suseたん可愛いですよSuseたん
パッケージだってなんでもありますよ。
Keepassや、Guakeなんてマニアックでありながら個人的に必須なものだって1Clickインストール出来ますのよ。
しかも出来るだけ新しくてStableなんですのよ。

ノートPCに32bit版を入れればまだまだ戦える、うん。

えー、いきなり話がずれましたが、今回はCentOSでやります。
OpenSuse でも同じ手順で出来ましたので、ご報告までに。

ユーザーシェルを変更する為、念の為にコンソールに直接ログインしておく事。
それかもう一つセッション作成しておく。
あるいはtmux とかscreen で、、、もういいですね(・﹃・)

環境はCentOS6.5 をminimal install している状態です。

全体の流れ

  1. yodl のビルドの為に icmake を作る
  2. yodl のマニュアル作成の為に latex パッケージをインストール
  3. yodl インストール
  4. ZSH のビルド
  5. ログインシェルの変更
  6. バージョンの確認
  7. おまけ:最新版の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 を編集すればインストール先を変更出来るぽいけど、デフォルトでいっちゃいます。
※ 本当に必要なのはprogramsmacros だけです。

./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.

これでビルドが始まります。
二時間ぐらいかかります(
コーヒーでも飲んでのんびり放っておきましょう。
寝る前に仕掛けるのもいいでしょう。

おはようございます、無事終了していましたか?
ではインストールしてあげます。

pacoporg に名前変わったんですねー

porg -lD make install

で、最後に表示されたメッセージが以下。

Libraries have been installed in:
/usr/local/lib/../lib64

If 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

お疲れ様でした!(・∀・)ノ

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?