# dnf list installed | grep postgresql
VRTSnbpostgresqlagent.x86_64 9.1.0.0-1620848511 @System
postgresql.x86_64 10.17-2.module+el8.5.0+11838+8dca950a @rhel8-appstream
postgresql-server.x86_64 10.17-2.module+el8.5.0+11838+8dca950a @rhel8-appstream
postgresql10.x86_64 10.22-1PGDG.rhel8 @rhel8-pgdg10
postgresql10-contrib.x86_64 10.22-1PGDG.rhel8 @rhel8-pgdg10
postgresql10-libs.x86_64 10.22-1PGDG.rhel8 @rhel8-pgdg10
postgresql10-server.x86_64 10.22-1PGDG.rhel8 @rhel8-pgdg10
# dnf list installed | grep postgis
postgis31_10.x86_64 3.1.7-1.rhel8 @rhel8-pgdg10
postgis31_10-client.x86_64 3.1.7-1.rhel8 @rhel8-pgdg10
postgis31_10-devel.x86_64 3.1.7-1.rhel8 @@commandline
postgis31_10-utils.x86_64 3.1.7-1.rhel8 @@commandline
(私の同僚は後者の2つのパッケージをどこかから手動でダウンロードしました。)
しようとすると、CREATE EXTENSION postgis;
次のエラーが発生します。
ERROR: could not access file "$libdir/postgis-3": No such file or directory
PostgreSQLのインストール場所/usr/pgsql-10/
と内部には、拡張子(たとえば)を持つファイルが/usr/pgsql-10/lib
あります。内部には、以下を含むpostgis * .controlファイルがあります。.so
postgis-3.so
/usr/pgsql-10/share/extension
# postgis extension
comment = 'PostGIS geometry and geography spatial types and functions'
default_version = '3.1.7'
module_pathname = '$libdir/postgis-3'
relocatable = false
libdir=/usr/pgsql-10/lib
ファイルに行を追加しようとするとエラーが発生しますが、パスをincludeに置き換えると以前ERROR: unrecognized parameter "libdir" in file "/usr/share/pgsql/extension/postgis.control"
と同じエラーが発生します。また、PostGIS以外の拡張機能をインストールしようとしましたが、同様のエラーが発生しました。module_pathname
/usr/pgsql-10/lib
ERROR: could not access file "$libdir/postgis-3": No such file or directory
could not access "$libdir/extension"
サーバーは、一部のPostgisパッケージのインストールを支援したITスタッフによって管理されているため、ここにパッケージのユニバースの不一致があるかどうかはわかりません。
読んだ後の追加の背景知識この回答/pgdata
、PostgreSQLデータディレクトリがスペース上の理由で別の場所()にインストールされていますが、設定変更から何かが欠落しているのではないでしょうか?
答え1
同様の問題がありましたが、postgresql
同時に2つのバージョンがインストールされていることがわかりました。あなたが示したものからとをpostgresql.x86_64
削除する必要があると思いますpostgresql-server.x86_64
。を使って削除できますdnf remove
。
dnf reinstall
互換性のないパッケージを削除した後、正しいパッケージを再インストールする必要があります。
答え2
部分文字列を含むバージョンのパッケージは、上流のPGDG
postgres rpmリポジトリからインポートされます。
https://www.postgresql.org/download/linux/redhat/
RHEL独自のリポジトリからモジュールとして提供されるパラレルインストールPostgresサーバーがアップストリームバージョンを妨げているようです。
または、誤ってrhel postgresサーバーおよび/またはコマンドにアクセスしています。 Postgisパッケージはアップストリームバージョンにのみインストールされるため、これは意味があります。
postgresアップストリームrpmリポジトリガイドラインには以下も含まれています。
sudo dnf -qy module disable postgresql
もちろん、postgresに対するrhelのサポートを利用するには、rhelが提供するpostgresパッケージに固執し、アップストリームパッケージの代わりにそれを使用する必要があります(つまり、データベースデータを移行してアップストリームパッケージを削除する)。
しかし、rhelがPostgisもパッケージとして提供しているかどうかはわかりません。