"CREATE EXTENSION postgis"が ""$libdir/postgis-3"ファイルにアクセスできません"で失敗します。

"CREATE EXTENSION postgis"が ""$libdir/postgis-3"ファイルにアクセスできません"で失敗します。
# 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ファイルがあります。.sopostgis-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/libERROR: could not access file "$libdir/postgis-3": No such file or directorycould not access "$libdir/extension"

サーバーは、一部のPostgisパッケージのインストールを支援したITスタッフによって管理されているため、ここにパッケージのユニバースの不一致があるかどうかはわかりません。

読んだ後の追加の背景知識この回答/pgdata、PostgreSQLデータディレクトリがスペース上の理由で別の場所()にインストールされていますが、設定変更から何かが欠落しているのではないでしょうか?

答え1

同様の問題がありましたが、postgresql同時に2つのバージョンがインストールされていることがわかりました。あなたが示したものからとをpostgresql.x86_64削除する必要があると思いますpostgresql-server.x86_64。を使って削除できますdnf remove

dnf reinstall互換性のないパッケージを削除した後、正しいパッケージを再インストールする必要があります。

答え2

部分文字列を含むバージョンのパッケージは、上流のPGDGpostgres 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もパッケージとして提供しているかどうかはわかりません。

関連情報