构建 GDAL 时缺少 OCI 支持

Missing OCI support when building GDAL

所以我正在构建一个在 Debian 上运行的 DOTNET 应用程序,并使用 ogr2ogr 将数据从 oracle 数据库复制到 Postgres 数据库。

问题是我无法让 GDAL 识别 OCI 驱动程序。

暂时收集到的安装命令如下:

#Install dependencies used by GDAL and ora2pg
apt-get update && apt-get install -y -q --no-install-recommends \
        libc-bin unzip curl ca-certificates rpm libaio1 \
        #Package manager for installing Oracle
        alien \
        # Install postgresql
        postgresql-client \
        # Used for the POSTGRES_HOME variable
        libpq-dev \
        #Package manager used for installation of perl database drivers
        cpanminus \
        # Proj build
        sqlite libsqlite3-dev pkg-config g++ make

#Install Oracle
curl -o oracle-instantclient-basic.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-basic-19.9.0.0.0-1.x86_64.rpm
curl -o oracle-instantclient-devel.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-devel-19.9.0.0.0-1.x86_64.rpm
curl -o oracle-instantclient-sqlplus.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-sqlplus-19.9.0.0.0-1.x86_64.rpm

alien -i oracle-instantclient-basic.x86_64.rpm && alien -i oracle-instantclient-devel.x86_64.rpm && alien -i oracle-instantclient-sqlplus.x86_64.rpm

EXPORT ORACLE_HOME=/usr/lib/oracle/19.9/client64
EXPORT TNS_ADMIN=/usr/lib/oracle/19.9/client64/network/admin
EXPORT LD_LIBRARY_PATH=/usr/lib/oracle/19.9/client64/lib
EXPORT PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/oracle/19.9/client64/bin

#Install Postgres en Oracle drivers for perl, ora2pg  
cpanm DBD::Oracle
cpanm DBD::Pg

#Setup
wget https://download.osgeo.org/proj/proj-6.3.2.tar.gz
tar -zxf proj-6.3.2.tar.gz -C /opt/
/opt/proj-6.3.2/configure --prefix=/usr --disable-static --enable-lto
make -C /opt/proj-6.3.2/
make install -C /opt/proj-6.3.2/

RUN wget http://download.osgeo.org/gdal/3.2.2/gdal-3.2.2.tar.gz
/opt/gdal-3.2.2/configure
make -C /opt/proj-6.3.2/
make install -C /opt/proj-6.3.2/

有没有人可以告诉我我缺少什么,因为我在互联网上找不到任何答案...

所以经过大量的测试,我的同事发现了问题。
显然,脚本在 $ORACLE_HOME/sdk.
中搜索文件夹 现在通过安装它,像上面一样,它不会在正确的位置安装 sdk 文件夹。
所以我们通过添加一个额外的步骤在正确的位置提取 SDK zip 包来解决它。

这是结果:

Dockerfile