なまけもの日記

人生のメモ帳

CentOS 5.11 + Sublime Text 3 ※断念

CentOS 5.11 64bit に Sublime Text 3 を導入しようとして断念してしまった.折角なので作業ログをメモとして残します.
※libstdc++.so.6 の更新は完了しましたが,libc.so.6の更新で断念しました.

Sublime Text 3 の導入

http://www.sublimetext.com/3のサイトからLinux用のSublime Text 3をダウンロード.CentOS 64bit なので,tarball(tar.bz2形式)のデータ. ダウンロード後はSublime Text公式のインストールマニュアルを参考にしてインストールを進める.

# wget http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_3083_x64.tar.bz2
# tar -xf sublime_text_3_build_3083_x64.tar.bz2
# mv sublime_text_3 $HOME/soft/
# ln -s $HOME/soft/sublime_text_3/sublime_text /usr/bin/sublime
# sublime /usr/share/applications/sublime.desktop

Sublime Textを実行した際にエラー発生.

# sublime /usr/share/applications/sublime.desktop
sublime: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by sublime)
sublime: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by sublime)
sublime:  /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by sublime)
sublime:  /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by sublime)

CentOSのバージョンが古いためGLIBC関係のエラーが多発.libc.so.6やlibstdc++.so.6の中身を確認すると,確かにGLIBC_2.11やGLIBCXX_3.4.11が存在しない.

# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_PRIVATE
# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.4
GLIBC_2.2.5
GLIBCXX_FORCE_NEW

libstdc++.so.6 の更新

libstdc++.so.6のバージョンが古いため,gccをソースからコンパイルしてリンクを貼ることにした.下記のページを参考にgccをインストール.gccのバージョンは現時点で最新版のgcc-5.2.0に更新.

gccのインストールガイド gcc-5.2.0.tar.gz

# tar -xf gcc-5.2.0.tar.gz
# cd gcc-4.6.2
# ./contrib/download_prerequisites
# cd ..
# mkdir objdir
# cd objdir
# $PWD/../gcc-5.2.0/configure --prefix=$HOME/gcc-5.2.0 
# make
# make install

生成されたlibstdc++.so.6(libstdc++.so.6.0.21)を確認すると,新しいバージョンのライブラリがあることが確認できる.

# strings $HOME/gcc-5.2.0/lib64/libstdc++.so.6.0.21 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

生成されたlibstdc++.so.6(libstdc++.so.6.0.21)を/usr/lib64にコピーしてシンボリックリンクを張り替えて, libstdc++.so.6 の更新完了.

# cp $HOME/gcc-5.2.0/lib64/libstdc++.so.6.0.21 /usr/lib64
# unlink libstdc++.so.6
# ln -s libstdc++.so.6.0.21 libstdc++.so.6

GLIB の更新

libstdc++.so.6だけでなくlibc.so.6の更新も必要だったため,こちらもソースからコンパイルしてリンクを貼ることにした.

参考ページ

# ldd --version
ldd (GNU libc) 2.5

現状はGLIBC_2.5だが,GLIBC_2.11が必要なのでglib-2.11のバージョンのソースをダウンロード.現時点で最新版のglibc-2.22だったが,インストールガイドはglibc-2.11.1を対象としたものだったため,glibc-2.11.1をインストールすることにした.

日本語のインストールガイド インストールガイド glibc-2.11.1.tar.gz

ここでglibcコンパイルが上手くいかず躓いたので導入を断念しました.時間があるときにでも見直して再度試してみる予定です.

結論

CentOS 5 に最新のツールを頑張ってインストールするのは面倒事が多すぎるので,さっさと最新の CentOS 7 等に移行すべき.