エラー: ライブラリ "/usr/lib64/pgsql/hstore.so" をロードできませんでした: /lib64/libc.so.6: バージョン `GLIBC_2.14' が見つかりません

エラー: ライブラリ "/usr/lib64/pgsql/hstore.so" をロードできませんでした: /lib64/libc.so.6: バージョン `GLIBC_2.14' が見つかりません

Amazon Linux AMI で実行されている PostgreSQL データベースで hstore を有効にしようとしています。すでに多くのハードルを乗り越えましたが、結局、このエラーが発生し、解決できません。

ERROR:  could not load library "/usr/lib64/pgsql/hstore.so": /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/pgsql/hstore.so)

を実行するldd --versionと、GLIBC のバージョンが取得され、 が返されますldd (GNU libc) 2.17

私が見つけた唯一の解決策は

  1. を実行していますyum updateが、私のシステムでは必要なバージョンよりも新しいバージョンが実行されているように見えるため、あまり意味がありません。

  2. glibcシステムにあるバージョンに対してプログラムを再コンパイルするのですが、よくわかりません。どのプログラムを再コンパイルする必要がありますか? PostgreSQL ですか?

数日間、このことで頭がおかしくなりそうで、行き詰まってしまいました。どなたか助けていただければ幸いです。

答え1

エラーはhstore共有ライブラリなので、おそらく、お使いのバージョンの GLIBC でコンパイルする必要があるのは、このライブラリだけです。postgres パッケージに含まれているものは、明らかにバージョン 2.14 でコンパイルされていますが、お使いのものは 2.17 です。

通常は、hstoreより高いレベルのバージョンで満たされるはずですが、実行されるチェックは、「2.14 以上」ではなく「2.14 に等しい」であるようです。

記事PostgreSQL 機能のハイライト:hstorehstoreソースコードからライブラリをインストールする方法について説明します。

ソースコードをダウンロードしてコアをインストールしたら、以下のコマンドを実行します。

cd $PG_SOURCE_ROOT
cd contrib/hstore
make install

この時点で、hstore に関連するすべてのライブラリとファイルは $INSTALL_FOLDER/share/extension にインストールされます。

$ ls $INSTALL_FOLDER/share/extension
hstore--1.0--1.1.sql  hstore--1.1.sql  hstore--unpackaged--1.0.sql  hstore.control

次に、Postgres サーバーに接続し、CREATE EXTENSION コマンドを使用して hstore のインストールを完了します。

postgres=# CREATE EXTENSION hstore;
CREATE EXTENSION
postgres=# \dx hstore
                         List of installed extensions
   Name  | Version | Schema |                   Description                    
--------+---------+--------+--------------------------------------------------
 hstore | 1.1     | public | data type for storing sets of (key, value) pairs
(1 row)

psql クライアントでは、'\dx' を使用して、サーバーにすでにインストールされている拡張機能のリストを確認できます。

答え2

私は Manjaro Linux (Arch のフォーク) を実行しており、Postgres をバージョン 10 から 11 にアップグレードした後にこの問題が発生しました。

(私の場合、パスは少し異なりました。私は次のようになりました: could not load library "/usr/lib/postgresql/hstore.so"。)

私はPostgreSQL のアップグレードに関する Arch Wiki の説明、すぐに稼働しました。

答え3

より新しい hstore.so を入手してください。これは、実行しているシステムには古すぎます。または、接着用の compat-glibc パッケージを探してみてください。

関連情報