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
。
私が見つけた唯一の解決策は
を実行しています
yum update
が、私のシステムでは必要なバージョンよりも新しいバージョンが実行されているように見えるため、あまり意味がありません。glibc
システムにあるバージョンに対してプログラムを再コンパイルするのですが、よくわかりません。どのプログラムを再コンパイルする必要がありますか? PostgreSQL ですか?
数日間、このことで頭がおかしくなりそうで、行き詰まってしまいました。どなたか助けていただければ幸いです。
答え1
エラーはhstore
共有ライブラリなので、おそらく、お使いのバージョンの GLIBC でコンパイルする必要があるのは、このライブラリだけです。postgres パッケージに含まれているものは、明らかにバージョン 2.14 でコンパイルされていますが、お使いのものは 2.17 です。
通常は、hstore
より高いレベルのバージョンで満たされるはずですが、実行されるチェックは、「2.14 以上」ではなく「2.14 に等しい」であるようです。
記事PostgreSQL 機能のハイライト:hstore
hstore
ソースコードからライブラリをインストールする方法について説明します。
ソースコードをダウンロードしてコアをインストールしたら、以下のコマンドを実行します。
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 パッケージを探してみてください。