「postgreSQL」タグアーカイブ

CentOS 8 にpostgreSQL 12を入れる!postGIS 3.0も入れる!やばかった~(TT)

#なんか文字フォントが変わっている気がするけど、気にしない。

さて、CentOS 8にpostgreSQL 12.xをインストールしようと思い立ちました。

インストールばっかりしているけど、きちんと使ってるんですけどね。
使った結果を出すのが面倒なんですよね。
守秘義務とかあってですねぇ(^^;

ということで、インストール手順ですが、まずはリポジトリをインストールします。

で、何を入れるの?みたいな感じになったんですよ。
本家に行けば良かったです。以下のサイトに行ってみます。

https://www.postgresql.org/download/linux/redhat/

少し下の方にある項目に必要事項を入力します。

4番目の項目にdnfのコマンドが記されているので、それをコピーして実行するだけです。
こんな素晴らしいものがあったことを知りませんでした(TT)
ありがとう!!!と感謝しながら、続けます。
まずは、リポジトリの追加を行います。

# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

ビルトインのpostgreSQLを無効にします。

# dnf -qy module disable postgresql

postgreSQL 12をインストールします。

# dnf install postgresql12

続いて、サーバをインストールします。

dnf install postgresql12-server

最後に、データベースの初期化を実施し、OS起動時における自動起動の設定を行います。(後でも大丈夫)

# /usr/pgsql-12/bin/postgresql-12-setup initdb
# systemctl enable postgresql-12

postgreSQLのデータベース保管場所を変更します。

デフォルトのままでも良いという方は読み飛ばしてください。

データベースが肥大化すると場所の移動が面倒になりますので、予め、どこか適当な場所にパーティションを切って移動しておくと楽です。
今回は、特にパーティションの設定にまでは言及しませんでしたが、OSインストール時に決められなった場合には、後々ストレージを増設することを想定した対応を行っておくと便利です。

今回は、/data/DBの下に作ることとしました。

# vi /usr/lib/systemd/system/postgresql-12.service
<<<<以下を編集します。>>>>
#Environment=PGDATA=/var/lib/pgsql/12/data/
Environment=PGDATA=/data/DB/

サービスの変更を行いましたので、デーモンの設定をリロードしておきます。

# systemctl daemon-reload

以下のコマンドを実行してデータベース環境を初期化します。

# PGSETUP_INITDB_OPTIONS="-E UTF8 --no-locale" /usr/pgsql-12/bin/postgresql-12-setup initdb

問題なければこんな感じになるはずです。

# more /data/DB/PG_VERSION
12

postgreSQLを起動する準備です。

# su - postgres
$ vi /var/lib/pgsql/.pgsql_profile
PATH=/usr/pgsql-12/bin:$PATH
export PATH

それと、データベースの場所を変更していますので、以下の設定を行います。

postgresユーザのまま作業を進めます。
$ vi /var/lib/pgsql/.bash_profile
#PGDATA=/var/lib/pgsql/12/data
PGDATA=/data/DB

$ source ~/.bash_profile

これで、postgreSQL 12の設定は完了です。
それでは、postgreSQLを起動してみます。

設定は完了しているので、rootユーザに戻り以下のコマンドを実行します。

# systemctl start postgresql-12.service

確認します。

# systemctl status postgresql-12.service
● postgresql-12.service - PostgreSQL 12 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-09 06:25:09 EDT; 6s ago

Active:active(running)となっていれば、正常に動作開始していますね。

postGISのインストール

postGISをインストールします。
postgreSQLのバージョンとpostGISのバージョンには、相関関係があります。
まずは、相関関係を確認します。

下記のURLで対応状況を確認します。

https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

対応表(抜粋)

見難い人は、直接上記URLで確認してください。
postgreSQL 12に対応したpostGISは2.5以降であることが判ります。

インストール対象を確認するために、一度リストを表示させてみます。

# dnf list | grep -i postgis
postgis30_12.x86_64                                  3.0.1-2.rhel8                                     pgdg12
postgis30_12-client.x86_64                           3.0.1-2.rhel8                                     pgdg12
postgis30_12-devel.x86_64                            3.0.1-2.rhel8                                     pgdg12
postgis30_12-docs.x86_64                             3.0.1-2.rhel8                                     pgdg12
postgis30_12-gui.x86_64                              3.0.1-2.rhel8                                     pgdg12
postgis30_12-utils.x86_64                            3.0.1-2.rhel8                                     pgdg12

postgis30_12.x86_64が最新の状態で使えそうです。

インストールしてみます。

# dnf install postgis30_12
メタデータの期限切れの最終確認: 0:11:51 時間前の 2020年03月09日 05時36分31秒 に実施しました。
エラー:
 問題: package postgis30_12-3.0.1-2.rhel8.x86_64 requires libgdal.so.26()(64bit), but none of the providers can be installed
  - cannot install the best candidate for the job
  - nothing provides libdap.so.25()(64bit) needed by gdal30-libs-3.0.4-2.rhel8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal30-libs-3.0.4-2.rhel8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal30-libs-3.0.4-2.rhel8.x86_64
  - nothing provides libdap.so.25()(64bit) needed by gdal30-libs-3.0.1-4.rhel8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal30-libs-3.0.1-4.rhel8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal30-libs-3.0.1-4.rhel8.x86_64
  - nothing provides libpoppler.so.77()(64bit) needed by gdal30-libs-3.0.1-4.rhel8.x86_64
  - nothing provides libdap.so.25()(64bit) needed by gdal30-libs-3.0.2-1.rhel8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal30-libs-3.0.2-1.rhel8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal30-libs-3.0.2-1.rhel8.x86_64
  - nothing provides libpoppler.so.77()(64bit) needed by gdal30-libs-3.0.2-1.rhel8.x86_64
  - nothing provides libdap.so.25()(64bit) needed by gdal30-libs-3.0.2-2.rhel8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal30-libs-3.0.2-2.rhel8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal30-libs-3.0.2-2.rhel8.x86_64
  - nothing provides libdap.so.25()(64bit) needed by gdal30-libs-3.0.4-1.rhel8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal30-libs-3.0.4-1.rhel8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal30-libs-3.0.4-1.rhel8.x86_64
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補 のパッケージのみを使用しないでください)

エラーがズラリと表示されました。
必要なパッケージがインストールされていないと怒られています。依存関係でクリアしてくれないみたいです。

そこで、それぞれ一つ一つインストールをクリアしようと思ったのですが、全く進みません。

半ば諦めてバージョンを戻そうかと悩んだんのですが、どうもそれでも上手く行かないみたいな話がちらほら・・・
CentOS 8を諦めるかどうしようか悩んでいたのですが、クリアしました!

これでどうじゃ!

# dnf install --enablerepo=PowerTools postgis30_12

多分これで行けます!
ダメだったら、libdapとかgdal30を–enablerepo=PowerToolsを追加して実行してからインストールしてみてください。

多分、これで行けたはず!
ダメだったら泣いてくださいm(__)m