LoginSignup
0
0

More than 5 years have passed since last update.

CentOS6.9にAnacondaを使ってOpenBabel 2.4.1をインストールする時にlibstdc++ライブラリが古くて起きたエラーへの対処

Last updated at Posted at 2017-07-27

概要

Anacondaを使ってケモインフォマティクス環境を構築する際にOpenBabelをインストールするのに苦労したので備忘録としてまとめます。

背景

Anaconda(version1.6.3)を使ってRDKit(version2017.03.3), OpenBabel(version2.4.1)のCentOS(6.9)へのインストールを試みました。
RDKit(version2017.03.3)は以下のコードで問題なくインストールされました。

RDKitのインストール
conda install -c rdkit rdkit

OpenBabel(version2.4.1)も以下のコードで問題なくインストールされるはずでした。

OpenBabelのインストール
conda install -c openbabel openbabel

しかし、その後python(version3.6.1)を起動しOpenBabelをimportできるかテストするとimportできませんでした :thinking:

OpenBabelのimport
Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:09:58) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import openbabel
Traceback (most recent call last):
  File "/home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/site-packages/openbabel.py", line 26, in swig_import_helper
    return importlib.import_module(mname)
  File "/home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 648, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 560, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 922, in create_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/site-packages/_openbabel.so)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/site-packages/openbabel.py", line 29, in <module>
    _openbabel = swig_import_helper()
  File "/home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/site-packages/openbabel.py", line 28, in swig_import_helper
    return importlib.import_module('_openbabel')
  File "/home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/yamasakih/.pyenv/versions/anaconda-4.0.0/envs/cheminfo/lib/python3.6/site-packages/_openbabel.so)

原因

「ImportError, GLIBCXX_3.4.15」とGoogle検索をするとこちらのブログがヒットし、こちらを読むとどうやらlibstdc++ライブラリのバージョンが古いことが原因のようです。

確かにインストールしようとしているサーバーはCentOS(6.9)と少し古いし、gccのバージョンを確認したところバージョンは4.4.7とこちらも古かったです。

対処

そこで、ブログに書いている説明の通りにgccをテンポリディレクトリでコンパイルしビルドされたlibstdc++.so.6.0.19へlibstdc++.so.6からシンボリックリンクを貼ることでOpenBabelをimportすることができました!

OpenBabelのimport
>>> import openbabel
>>> #エラーがでなくなりました

ただ、このlibstdc++.so.6はコンパイル時のみだけでなくimport時に毎回必要なファイルのようなので、無事importできた後に整合性をとるためにbackupをとっていた元のlibstdc++.so.6に戻したら、また同じエラーが出てしまいました。

なので、複数人で共有しているサーバーなどで行う時は、(おそらく問題ないと思いますが)新しいバージョンのlibstdc++.so.6を使い続けてよいか協議の上で使うと良いと思います。

最後に

以上でCentOS6.9にOpenBabelをインストールする時につまずいたところの説明を終わります。皆様のケモインフォマティクスライフの助けになれば幸いです。ここまでお読みいただきありがとうございました。

0
0
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
0
0