web-dev-qa-db-ja.com

postgis 2.1.6-> 2.2.0アップグレード後にpostgresql9.4-> 9.5beta2をアップグレードできません

これが私の状況です:

  1. 私はPostgresql 9.4.5とPostgis 2.1.6から始めました。すべてがスムーズに実行されます。どちらもソースからインストールされます。
  2. Postgisを2.2.0にアップグレードしました(ソースのダウンロード、構成、作成、インストール、次に_ALTER EXTENSION postgis UPGRADE TO '2.2.0';_)。古い_POSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.3" LIBJSON="0.11" RASTER_はlibディレクトリに残っていましたが、これは機能したようです(select postgis_full_version()はpostgisがインストールされた両方のデータベースで_postgis-2.1.so_を示しています)。
  3. Postgresqlを9.4.5から9.5beta2にアップグレードしようとしています。ソースをダウンロードし、構成し、作成し、インストールし、Postgis 2.2.0、initdbをインストールし、_pg_upgrade_を実行する準備をします。 _pg_upgrade_は次のエラーで失敗します:

インストールが、新しいインストールにないロード可能なライブラリを参照しています。これらのライブラリを新しいインストールに追加したり、それらを使用している関数を古いインストールから削除したりできます。問題のあるライブラリのリストはファイルにあります:loadable_libraries.txt

loadable_libraries.txtには以下が含まれます:

ライブラリ "$ libdir/rtpostgis-2.1"をロードできませんでしたエラー:ファイル "$ libdir/rtpostgis-2.1"にアクセスできませんでした:そのようなファイルまたはディレクトリはありません

ライブラリ "$ libdir/postgis-2.1"を読み込めませんでしたエラー:ファイル "$ libdir/postgis-2.1"にアクセスできませんでした:そのようなファイルまたはディレクトリはありません

Postgresqlの新しいバージョンにoldバージョンのPostgisが必要な理由がわかりません...削除されるべきではありませんか?古い_postgis-2.1.so_および_rtpostgis-2.1.so_ファイルを9.4のlibディレクトリから移動しましたが、エラーが解決しません。

また、Postgresql 9.5beta2に対してPostgis 2.1.6をコンパイルしようとしましたが、次のエラーでコンパイルが失敗しました。

lwgeom_accum.c: In function ‘pgis_geometry_accum_transfn’: lwgeom_accum.c:109:46: error: ‘AggState {aka struct AggState}’ has no member named ‘aggcontext’ aggcontext = ((AggState *) fcinfo->context)->aggcontext;

また、2.1ライブラリを9.4ディレクトリから9.5ディレクトリにコピーしようとしましたが、Postgresqlのバージョンが一致していないため失敗しました。

すべてのデータベースのダンプと再ロードは可能ですが、データベースが巨大であるため、最後の手段としてのみ使用できます。答えが「9.5はまだベータ版であるため」であれば、私はそれを受け入れることができますが、それらのベータ版は以前はかなり安定していたようです。

7
elynnaie

次の手順に従って、問題を解決することができました。

  1. ソースを2.1.6にダウンロードし、見つかったパッチを適用します ここ
  2. Postgis2.1.6はPostgresql9.5beta2でコンパイルされるようになります。コンパイルしてインストールします。
  3. pg_upgradeが機能し、古いバージョンのPostgisがインストールされています。

これは理想的な状況ではないと思いますが、少なくとも現在は実行されています。

3
elynnaie