75436
Amazon Linux2 で PostgreSQL + PostGIS 環境を構築したいです

* * *

[【Ansible】PostgreSQL 12をAmazon Linux 2にインストールし、Ansible
Playbook化する【PostgreSQL】](https://qiita.com/tmiki/items/00d22edc6a554f61bd04)

まず PostgreSQL のインストールに関してはこちらのブログを参考にしました  
バージョン 12 になってますがいま 13 がでてるみたいなので 12 => 13 におきかえています

新規に立てた EC2 上で postgres インストール＆起動まではブログ通りでうまく行きました

```

    sudo yum update -y
    
    sudo rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/pgdg-redhat-all.repo
    sudo yum install -y postgresql13 postgresql13-server
    PGSETUP_INITDB_OPTIONS='--encoding=UTF-8 --locale=C' sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
    sudo systemctl enable --now postgresql-13
    
```

PostGIS に関しては  
[PostgreSQLにPostGISをセットアップする](https://qiita.com/is0me/items/f017ada614664205677a)  
こちらのブログを参考にしました

まず epel が必要みたいなので

```

    sudo yum -y install epel-release
    
```

を実行しましたが

```

    33 packages excluded due to repository priority protections
    パッケージ epel-release は利用できません。
    エラー: 何もしません
    
    
    epel-release is available in Amazon Linux Extra topic "epel"
    
    To use, run
    # sudo amazon-linux-extras install epel
    
    Learn more at
    https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
    
```

といわれたので

```

    sudo amazon-linux-extras install epel
    
```

を実行したところ一応インストールには成功しました

```

    sudo yum -y install epel-release
    
```

を行うと  
`パッケージ epel-release-7-11.noarch はインストール済みか最新バージョンです`  
といわれるようになったので同等のものが入ったんだと思います

続いて postgis 本体インストール  
これもブログでは 30_12 になってますが 31 がでてるので 31_13 にしてます

```

    sudo yum install -y postgis31_13
    
```

これもインストール自体は成功しました

postgis 拡張を有効にしようと

```

    sudo su - postgres
    psql -d postgres -c "CREATE EXTENSION postgis;"
    
```

を実行したところ

```

    ERROR:  could not load library "/usr/pgsql-13/lib/postgis-3.so": /lib64/libSFCGAL.so.1: undefined symbol: _ZN5boost7archive18text_iarchive_implINS0_13text_iarchiveEE4loadERSs
    
```

というエラーになってしまいます

後者のブログに

> 色々試した結果PostGISは2でも3でも、CentOS 7、PostgreSQL 12推奨です。  
>  互換性の都合で、Amazon Linux、Amazon Linux 2は避けるべきです。

とかかれているんですが最終的なバッチ作業を既存の Amazon Linux2 で動かしたいので  
どうしても Amazon Linux2 で動かしたいです

> PostGISでは、  
>  gcc, libxml2, gdal, geos, proj  
>  あたりが必要になりますが、個別にインストールすると互換性の問題で、CREATE EXTENSION postgisを実行するとエラーになります。
>
> gdal, geos, projは、pgdg-commonリポジトリのものを使いましょう。  
>  ※ sudo yum install postgis30_12では、gdal30-libs, geos38, proj70が入ります。

とあるんですがビルドやリンカー等の知識がなくて  
具体的にどうすればいいかがわからないので助けていただけないでしょうか

よろしくお願いします

* * *

追記:

```

    ldd /lib64/libSFCGAL.so.1
        linux-vdso.so.1 (0x00007ffcc9d99000)
        libCGAL.so.11 => /usr/lib64/libCGAL.so.11 (0x00007faf4d395000)
        libCGAL_Core.so.11 => /usr/lib64/libCGAL_Core.so.11 (0x00007faf4d15c000)
        libmpfr.so.4 => /usr/lib64/libmpfr.so.4 (0x00007faf4cefe000)
        libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007faf4cc86000)
        libboost_date_time-mt.so.1.53.0 => /usr/lib64/libboost_date_time-mt.so.1.53.0 (0x00007faf4ca75000)
        libboost_thread-mt.so.1.53.0 => /usr/lib64/libboost_thread-mt.so.1.53.0 (0x00007faf4c853000)
        libboost_system-mt.so.1.53.0 => /usr/lib64/libboost_system-mt.so.1.53.0 (0x00007faf4c64f000)
        libboost_serialization-mt.so.1.53.0 => /usr/lib64/libboost_serialization-mt.so.1.53.0 (0x00007faf4c3e2000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007faf4c060000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007faf4bd20000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007faf4bb0a000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007faf4b75f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007faf4e080000)
        librt.so.1 => /usr/lib64/librt.so.1 (0x00007faf4b557000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007faf4b339000)
    
```

* * *
```

    sudo rpm -ivh https://centos.pkgs.org/7/centos-x86_64/boost-serialization-1.53.0-28.el7.x86_64.rpm
    
```

を実行してみたんですが

```

    準備しています...              ################################# [100%]
        ファイル /usr/lib64/libboost_serialization-mt.so.1.53.0 (パッケージ boost-serialization-1.53.0-28.el7.x86_64 から) は、パッケージ boost-serialization-1.53.0-27.amzn2.0.5.x86_64 からのファイルと競合しています。
        ファイル /usr/lib64/libboost_serialization.so.1.53.0 (パッケージ boost-serialization-1.53.0-28.el7.x86_64 から) は、パッケージ boost-serialization-1.53.0-27.amzn2.0.5.x86_64 からのファイルと競合しています。
        ファイル /usr/lib64/libboost_wserialization-mt.so.1.53.0 (パッケージ boost-serialization-1.53.0-28.el7.x86_64 から) は、パッケージ boost-serialization-1.53.0-27.amzn2.0.5.x86_64 からのファイルと競合しています。
        ファイル /usr/lib64/libboost_wserialization.so.1.53.0 (パッケージ boost-serialization-1.53.0-28.el7.x86_64 から) は、パッケージ boost-serialization-1.53.0-27.amzn2.0.5.x86_64 からのファイルと競合しています。
    
```

といわれてしまいます  
すでに入ってるものを無効にするにはどうすればいいんでしょうか
CC BY-SA 4.0
2021-04-20T11:29:40.723
75401
2021-04-21T17:04:34.003
2021-04-21T07:06:25.447
question
postgresql amazon-linux
Amazon Linux2 へ PostgreSQL + PostGIS をインストールしたい
コメントで教えていただいた通り  
boost-serialization のパッケージを置き換えたところエラーがでなくなりました

```

    # install postgis
    sudo amazon-linux-extras install -y epel 
    sudo rpm -ivh --replacepkgs --replacefiles http://mirror.centos.org/centos/7/os/x86_64/Packages/boost-serialization-1.53.0-28.el7.x86_64.rpm
    sudo yum install -y postgis31_13 postgis31_13-client osm2pgsql --enablerepo=epel
    
    # posgis 有効
    sudo su - postgres
    psql -d postgres -c "CREATE EXTENSION postgis;"
    
```
CC BY-SA 4.0
2021-04-21T17:04:34.003
75436
2021-04-21T17:04:34.003
75401
answer