CentOS6.8にChromeを入れようとしたらgccをビルドすることになった

chromiumでもいいんですが動画再生で不都合があったり、adblockが入れられなかったりするので頑張って動かせるようにしました。
デフォルトのレポジトリでは用意されていないし、公式サイトにいってもCentOS用のrpmは用意されていません。Fedora用のrpmはあるのですが、インストールに失敗しました。

次に試したもの。

ググるとすぐ見つかると思います。)

% wget http://chrome.richardlloyd.org.uk/install_chrome.sh
% chmod u+x install_chrome.sh
% sudo ./install_chrome.sh

これでインストール自体はできます。これで使えるようになっている人も多いと思います。しかし僕の場合、起動しませんでした。

% /opt/google/chrome/chrome
/opt/google/chrome/chrome: libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /opt/google/chrome/chrome)
/opt/google/chrome/chrome: libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /opt/google/chrome/chrome)
/opt/google/chrome/chrome: libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /opt/google/chrome/chrome)

こんな感じです。ランチャーから起動してもうんともすんとも言いません。
libstdc++.so.6が良くないみたいです。
調べてみるとlibstdc++.so.6のバージョンが古くChromeで必要とされている機能が含まれていないようです。
(/usr/lib64はLinuxにおいて共有ライブラリがおいてあるディレクトリで、ここにあるファイルの一部がChromeから読み込まれます。)

% cd /usr/lib64
% strings libstdc++.so.6|grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
% strings libstdc++.so.6|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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

こうするとエラーメッセージに出力されていたGLIBCXX_3.4.15やCXXABI_1.3.5などが含まれていないことが分かるみたいです。
yumを使ってアップデートできないか試したのですがlatest versionのため無理だと言われてしまいました。

gccビルド、libstdc++.so.6を作る

調べてみるとgccをビルドしてそこからlibstdc++.so.6を取り出す方法が見つかりました。
gccビルドは他のサイトを参考にしてもらうとしていくつか引っかかった部分を書いておきます。

多くのサイトでそのようにしているので

ここで結構ハマりました。LD_LIBRARY_PATHなどを設定していたためビルドに失敗してしまいました。
c++ - How can I understand these dreadful errors when building gcc-4.8.2? - Stack Overflow
ビルドに必要なツールをインストールしたにも関わらず似たようなエラーが出るときは関係しそうな環境変数をunsetしてみると成功するかもしれません。

  • ビルドにかなり時間がかかる

放置していたので何時間かかったのかよく分からないのですが、configureやmakeのオプションを調べてみるといいかもしれない

ビルドが完了したら、libstdc++.so.6を/usr/lib64にコピーします。

$ sudo cp ${HOME}/src/gcc-4.8.4/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19 /usr/lib64

こんな感じにリンクを貼って下さい
(リンクを貼らなくてもldconfigをするだけで、自動的に新しいライブラリにリンクを貼ってくれるみたいです。)

% ll |grep libstdc++
lrwxrwxrwx   1 root         root    19 Oct 26 10:31 libstdc++.so.6 -> libstdc++.so.6.0.19
lrwxrwxrwx   1 root         root    19 Oct 26 10:27 libstdc++.so.6.bak -> libstdc++.so.6.0.13
-rwxr-xr-x   1 root         root  6.2M Oct 22 10:50 libstdc++.so.6.0.19
-rwxr-xr-x   1 root         root  967K May 10 18:38 libstdc++.so.6.0.13
lrwxrwxrwx.  1 root         root    18 Dec 21  2015 libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x.  1 root         root  807K Mar 23  2011 libstdc++.so.5.0.7

ldconfigをしてChromeから読み込めるようにします

% sudo ldconfig

ここで起動しようとしたのですがまたも失敗しました。
パーミッション関係が悪いみたいなのでこれは単純です。
hogeは自分のユーザー名に置き換えて見て下さい)

% /opt/google/chrome/chrome
[31751:31751:1024/102744:ERROR:process_singleton_posix.cc(413)] readlink failed: Permission denied
[31751:31751:1024/102744:ERROR:process_singleton_posix.cc(249)] readlink(/home/hoge/.config/google-chrome/SingletonLock) failed: Permission denied
[31751:31751:1024/102744:ERROR:process_singleton_posix.cc(249)] readlink(/home/hoge/.config/google-chrome/SingletonLock) failed: Permission denied
[31751:31751:1024/102744:ERROR:process_singleton_posix.cc(273)] Failed to create /home/hoge/.config/google-chrome/SingletonLock: Permission denied
[31751:31751:1024/102744:ERROR:process_singleton_posix.cc(413)] readlink failed: Permission denied
[31751:31751:1024/102744:ERROR:process_singleton_posix.cc(249)] readlink(/home/hoge/.config/google-chrome/SingletonLock) failed: Permission denied
[31751:31751:1024/102744:ERROR:chrome_browser_main.cc(1703)] Failed to create a ProcessSingleton for your profile directory. This means that running multiple instances would start multiple browser processes rather than opening a new window in the existing process. Aborting now to avoid profile corruption.
% sudo chmod 755 google-chrome
% /opt/google/chrome/chrome
[32624:32624:1024/103623:ERROR:process_singleton_posix.cc(273)] Failed to create /home/hoge/.config/google-chrome/SingletonLock: Permission denied
[32624:32624:1024/103623:ERROR:chrome_browser_main.cc(1703)] Failed to create a ProcessSingleton for your profile directory. This means that running multiple instances would start multiple browser processes rather than opening a new window in the existing process. Aborting now to avoid profile corruption.
% sudo chown hoge:hoge google-chrome

これでターミナルからもランチャーのアイコンからも起動できるようになりました。
f:id:beback:20161026105159p:plain
めでたし、めでたし

最後に

これでWindowsマシンと変わらないブラウジングができるようになりました。
(デスクトップ用途ならCentOSなんて使わない方がいいような...)
Ubuntu系をオススメします。でも、いろいろな事情によりCentOSじゃないとだめな人もいますよね?