Fedora Server を 37 にアップグレードすると、Postgres のアップグレードが機能しませんでした: エラー: ファイル "$libdir/postgis-3" にアクセスできませんでした

Fedora Server を 37 にアップグレードすると、Postgres のアップグレードが機能しませんでした: エラー: ファイル "$libdir/postgis-3" にアクセスできませんでした

他のすべてが正常に動作していることが示された後 (YAY!)、Postgres起動を拒否しました (名前に惑わされないでください。Postgres は、 1995 年の最初のパッケージ リリースで、クエリ言語プロセッサPostgreSQLを に変換する Paul Aoki の功績を称えてとしてパッケージ化されました。パッケージング/ブランディング以外のすべてで という名前が使用されています)。QUELSQLPostgres

この起動の失敗は予想外ではありませんでしたが、アップグレードされたすべてのインストールではこれを実行する必要があり、適切なアップグレード スクリプトを実行する必要があるため、パッケージはアップグレードのためにこれを予測できた可能性があります。そのスクリプトは次のように実行できます。

postgresql-setup --upgrade --upgrade-from postgresql

残念ながら失敗しました。

私はエラーの痕跡をたどりました。これは、Postgresユーザーのホーム ディレクトリにあるログ ファイルで、前述のコマンドによって出力された中間ログによって参照され、インストールで使用される のstdout問題を示しています。Postgis

最も関連性の高いエラー メッセージは次のとおりです。

ERROR:  could not access file "$libdir/postgis-3"

残念ながら、 がどこにあるべきかは書かれていませんでした$libdir。また、同様に残念なことに、私もそれがどこにあるか知りません。 という名前を含むディレクトリはまだ見つかっていませんpostgis

Postgisアップグレードされていないかインストールされていないと推測しましたが、インストールされたパッケージを簡単にチェックすると、それは間違いであることがわかりました。postgis-3.2.2-1.fc37.x86_64

エラー メッセージには一部が見つからないと表示されていたのにpostgis-3postgisバージョン 3 がインストールされていることに驚きました。

Postgresまだ修正方法がありません。ご意見は? これは、を使用するユーザーにとって共通の問題であるに違いありませんPostgis

答え1

ポストGISパッケージとしてインストールされる拡張機能です。postgresql のメジャー バージョンと postgis 拡張機能のバージョンの両方に適したパッケージをインストールする必要があります。たとえばpostgis32_15postgis31_14

$libdirまたは、他の定義済み(主にコンパイル時に付属)構成は、pg_configクライアントアプリケーション。基本的にはlibdir以下のコマンドを実行します。

pg_config --pkglibdir

見つからない場合はpg_configおそらくそれはpsqlコマンドは ( $bindir) です。

答え2

Fedora 37 では、パッケージをインストールしていない場合、db のアップグレード中にこのエラー メッセージが表示されますpostgis-upgrade

したがって、PostGIS 対応データベースの完全なアップグレード手順は次のようになります。

systemctl start postgresql.service
# => start fails fails and some hints are logged
dnf install postgresql-upgrade postgis-upgrade
postgresql-setup --upgrade
systemctl start postgresql.service
sudo -u postgres psql -f /var/lib/pgsql/update_extensions.sql
sudo -u postgres reindexdb yourdb

/var/lib/pgsql/data/log/postgresql*.log一般的に、具体的なデータベースに固有の追加のヒントがあるかどうかを確認するために、アップグレード ログ (および標準) を確認することをお勧めします。

関連情報