CentOS 5.6 で Firefox 5 が動かない

とりあえず「Update Firefox」をクリックして Firefox のページへ行って Linux i686 版 バージョン 5.0 をダウンロードしてきた。
で、CentOS のデスクトップで firefox-5.0tar.bz2 を展開して、firefox アイコンをダブルクリックして起動してみても何も起こらない…。


どうしたんだろう?と思ってコマンドラインから起動したらエラーが出てた。

[paraches@localhost firefox]$ ./firefox
./firefox-bin: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/paraches/myTest/firefox/libxul.so)
[paraches@localhost firefox]$ 

どうやら「GLIBCXX_3.4.9」ってバージョンが必用ってことらしいのだけど、良くわからないのでググってみたら…。
CentOS に入ってるライブラリが古いってのが問題らしい。Firefox 4 の時点で結構このエラーが言及されてた。
で、回避方法は2つ

  • 他のパッケージに入っている新しい libstdc++ を使う
  • ソースから自分で libstdc++(GCC)をインストール

手順が少なくてさっくり終わりそうなのは、他のパッケージに入っている新しいのを使う方法。でも、それじゃつまらないので GCC の新しいのをソースからインストールしてみることにした。

gcc ビルドの準備

gmp のアンインストールとインストール
まずは CentOS 5.6 に最初から入ってる gmp のバージョンの確認

[paraches@localhost ~]$ yum list installed | grep gmp
gmp.i386                                 4.1.4-10.el5                  installed
gmp.x86_64                               4.1.4-10.el5                  installed
gmp-devel.i386                           4.1.4-10.el5                  installed
gmp-devel.x86_64                         4.1.4-10.el5                  installed
[paraches@localhost firefox]$ 

というわけで、gmp 4.1.4 らしい。この後でインストールする mpc 0.9 は gmp 4.3.2 以上が必用なので、いったん gmp 4.1.4 を削除して自分で gmp 5.0.1 をソースからインストールする。
基本的にココの手順をそのまんま。


まずは削除

[paraches@localhost ~]$ sudo yum remove gmp
<省略>
Removed:
  gmp.i386 0:4.1.4-10.el5               gmp.x86_64 0:4.1.4-10.el5              

Dependency Removed:
  gcc-gfortran.x86_64 0:4.1.2-50.el5      gmp-devel.i386 0:4.1.4-10.el5         
  gmp-devel.x86_64 0:4.1.4-10.el5         gnome-games.x86_64 1:2.16.0-2.el5     
  guile.x86_64 5:1.8.0-8.20060831cvs      php.x86_64 0:5.1.6-27.el5_5.3         
  php-cli.x86_64 0:5.1.6-27.el5_5.3      

Complete!
[paraches@localhost ~]$ 


gmp 5.0.1 のインストール
configure でオプションを付けていること以外は特に難しいことはなし。

[paraches@localhost myTest]$ wget ftp://ftp.gmplib.org/pub/gmp-5.0.1/gmp-5.0.1.tar.bz2
[paraches@localhost gmp-5.0.1]$ tar jxvf gmp-5.0.1.tar.bz2 
[paraches@localhost gmp-5.0.1]$ cd gmp-5.0.1
[paraches@localhost gmp-5.0.1]$ ./configure --enable-cxx
[paraches@localhost gmp-5.0.1]$ make
[paraches@localhost gmp-5.0.1]$ sudo make install


mpfr 3.0.1 のインストール
これは特に問題なくサックリとインストール。

[paraches@localhost myTest]$ wget http://www.mpfr.org/mpfr-current/mpfr-3.0.1.tar.gz
[paraches@localhost mpfr-3.0.1]$ tar zxvf mpfr-3.0.1.tar.gz 
[paraches@localhost mpfr-3.0.1]$ cd mpfr-3.0.1
[paraches@localhost mpfr-3.0.1]$ ./configure
[paraches@localhost mpfr-3.0.1]$ make
[paraches@localhost mpfr-3.0.1]$ sudo make install

mpc 0.9 のインストール
これも gmp のバージョンを上げてあるのでサックリとインストール。

[paraches@localhost myTest]$ wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
[paraches@localhost mpc-0.9]$ tar zxvf mpc-0.9.tar.gz 
[paraches@localhost mpc-0.9]$ cd mpc-0.9
[paraches@localhost mpc-0.9]$ ./configure
[paraches@localhost mpc-0.9]$ make
[paraches@localhost mpc-0.9]$ sudo make install

ppl 0.11.2 のインストール
これも問題なくサックリとインストール。ただ、ビルドにちょっと時間がかかる。

[paraches@localhost myTest]$ wget http://www.cs.unipr.it/ppl/Download/ftp/releases/0.11.2/ppl-0.11.2.tar.gz
[paraches@localhost ppl-0.11.2]$ tar zxvf ppl-0.11.2.tar.gz 
[paraches@localhost ppl-0.11.2]$ cd ppl-0.11.2
[paraches@localhost ppl-0.11.2]$ ./configure
[paraches@localhost ppl-0.11.2]$ make
[paraches@localhost ppl-0.11.2]$ sudo make install
[paraches@localhost ppl-0.11.2]$ sudo /sbin/ldconfig

libelf 0.8.13 のインストール
これも問題なくサックリとインストール

[paraches@localhost myTest]$ wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
[paraches@localhost libelf-0.8.13]$ tar zxvf libelf-0.8.13.tar.gz 
[paraches@localhost libelf-0.8.13]$ cd libelf-0.8.13
[paraches@localhost libelf-0.8.13]$ ./configure
[paraches@localhost libelf-0.8.13]$ make
[paraches@localhost libelf-0.8.13]$ sudo make install
[paraches@localhost libelf-0.8.13]$ sudo /sbin/ldconfig

いよいよ gcc のインストール

ここまでしっかり準備してきたので、特に問題なくインストールできるはず!

[paraches@localhost gcc-4.5.3]$ wget ftp://gd.tuwien.ac.at/gnu/gcc/releases/gcc-4.5.3/gcc-4.5.3.tar.gz
[paraches@localhost gcc-4.5.3]$ tar zxvf gcc-4.5.3.tar.gz 
[paraches@localhost gcc-4.5.3]$ cd gcc-4.5.3
[paraches@localhost gcc-4.5.3]$ ./configure
[paraches@localhost gcc-4.5.3]$ make
[paraches@localhost gcc-4.5.3]$ sudo make install
[paraches@localhost gcc-4.5.3]$ sudo /sbin/ldconfig
/sbin/ldconfig: /usr/local/lib/libstdc++.so.6.0.14-gdb.py is not an ELF file - it has the wrong magic bytes at the start.

[paraches@localhost gcc-4.5.3]$ 

凄く時間がかかったけどなんとか終了!
あれ? ライブラリの登録でなんだか怪しいメッセージが出た…。
あぁ .py だから text file だし! 問題なし。


というわけで gcc のバージョン確認。

[paraches@localhost gcc-4.5.3]$ gcc --version
gcc (GCC) 4.5.3
Copyright (C) 2010 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.

[paraches@localhost gcc-4.5.3]$ 

ちゃんと 4.5.3 になってる!
念のために GLIBCXX も確認してみる。

[paraches@localhost ~]$ objdump -p /usr/local/lib/libstdc++.so.6.0.14 | grep GLIBCXX
2 0x00 0x08922974 GLIBCXX_3.4
3 0x00 0x02297f81 GLIBCXX_3.4.1
        GLIBCXX_3.4 
4 0x00 0x02297f82 GLIBCXX_3.4.2
        GLIBCXX_3.4.1 
5 0x00 0x02297f83 GLIBCXX_3.4.3
        GLIBCXX_3.4.2 
6 0x00 0x02297f84 GLIBCXX_3.4.4
        GLIBCXX_3.4.3 
7 0x00 0x02297f85 GLIBCXX_3.4.5
        GLIBCXX_3.4.4 
8 0x00 0x02297f86 GLIBCXX_3.4.6
        GLIBCXX_3.4.5 
9 0x00 0x02297f87 GLIBCXX_3.4.7
        GLIBCXX_3.4.6 
10 0x00 0x02297f88 GLIBCXX_3.4.8
        GLIBCXX_3.4.7 
11 0x00 0x02297f89 GLIBCXX_3.4.9
        GLIBCXX_3.4.8 
12 0x00 0x0297f860 GLIBCXX_3.4.10
        GLIBCXX_3.4.9 
13 0x00 0x0297f861 GLIBCXX_3.4.11
        GLIBCXX_3.4.10 
14 0x00 0x0297f862 GLIBCXX_3.4.12
        GLIBCXX_3.4.11 
15 0x00 0x0297f863 GLIBCXX_3.4.13
        GLIBCXX_3.4.12 
16 0x00 0x0297f864 GLIBCXX_3.4.14
        GLIBCXX_3.4.13 
[paraches@localhost ~]$ 

GLIBCXX_3.4.9 あるし、3.4.14 まであるよ!

また php53 をインストールして Firefox 5 で Wordpress 3.2 を見る

というわけで、firefox 5 が起動したけど、gmp のバージョンを新しくする為に一度アンインストールをした。その時に php も依存の関係でアンインストールされちゃってる…。ってことは Wordpress 3.2 動かないじゃん!
あぁ、本末転倒…。


仕方がないのでもう一度 php53 をインストールする。

[paraches@localhost myTest]$ sudo yum install php53*
<省略>
Installed:
  php53.x86_64 0:5.3.3-1.el5_6.1                                                
  php53-bcmath.x86_64 0:5.3.3-1.el5_6.1                                         
  php53-cli.x86_64 0:5.3.3-1.el5_6.1                                            
  php53-common.x86_64 0:5.3.3-1.el5_6.1                                         
  php53-dba.x86_64 0:5.3.3-1.el5_6.1                                            
  php53-devel.x86_64 0:5.3.3-1.el5_6.1                                          
  php53-gd.x86_64 0:5.3.3-1.el5_6.1                                             
  php53-imap.x86_64 0:5.3.3-1.el5_6.1                                           
  php53-intl.x86_64 0:5.3.3-1.el5_6.1                                           
  php53-ldap.x86_64 0:5.3.3-1.el5_6.1                                           
  php53-mbstring.x86_64 0:5.3.3-1.el5_6.1                                       
  php53-mysql.x86_64 0:5.3.3-1.el5_6.1                                          
  php53-odbc.x86_64 0:5.3.3-1.el5_6.1                                           
  php53-pdo.x86_64 0:5.3.3-1.el5_6.1                                            
  php53-pgsql.x86_64 0:5.3.3-1.el5_6.1                                          
  php53-process.x86_64 0:5.3.3-1.el5_6.1                                        
  php53-pspell.x86_64 0:5.3.3-1.el5_6.1                                         
  php53-snmp.x86_64 0:5.3.3-1.el5_6.1                                           
  php53-soap.x86_64 0:5.3.3-1.el5_6.1                                           
  php53-xml.x86_64 0:5.3.3-1.el5_6.1                                            
  php53-xmlrpc.x86_64 0:5.3.3-1.el5_6.1                                         

Dependency Installed:
  gmp.x86_64 0:4.1.4-10.el5           libc-client.x86_64 0:2004g-2.2.1          

Complete!
[paraches@localhost myTest]$

あれ? 古い gmp がインストールされちゃってるぞ…。大丈夫なのか???


で、apache をリスタート。

[paraches@localhost myTest]$ sudo /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
[paraches@localhost myTest]$ 

Firefox 5 を起動して Wordpress 3.2 のダッシュボードにアクセスしてみると…

ブラウザが古いって言われずに”ちゃんと”見られた!