[英]ERROR: unsatisfiable constraints when installing PostGIS on the Alpine Docker image
Ok, so the task seems pretty easy!好的,所以任务看起来很简单! Use an
Alpine
image (as it is light-weight and secure) to perform some PostgreSQL
DB creation/migrations.使用
Alpine
镜像(因为它轻量且安全)来执行一些PostgreSQL
数据库创建/迁移。 I'm using the following Dockerfile
using the code here :我使用此处的代码使用以下
Dockerfile
:
FROM alpine:latest
RUN apk add -U postgresql
# install PostGIS
ENV POSTGIS_VERSION 2.5.2
ENV POSTGIS_SHA256 225aeaece00a1a6a9af15526af81bef2af27f4c198de820af1367a792ee1d1a9
RUN set -ex \
\
&& apk add --no-cache --virtual .fetch-deps \
ca-certificates \
openssl \
tar \
\
&& wget -O postgis.tar.gz "https://github.com/postgis/postgis/archive/$POSTGIS_VERSION.tar.gz" \
&& echo "$POSTGIS_SHA256 *postgis.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src/postgis \
&& tar \
--extract \
--file postgis.tar.gz \
--directory /usr/src/postgis \
--strip-components 1 \
&& rm postgis.tar.gz \
\
&& apk add --no-cache --virtual .build-deps \
autoconf \
automake \
g++ \
json-c-dev \
libtool \
libxml2-dev \
make \
perl \
\
&& apk add --no-cache --virtual .build-deps-edge \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \
gdal-dev \
geos-dev \
proj4-dev \
protobuf-c-dev \
&& cd /usr/src/postgis \
&& ./autogen.sh \
# configure options taken from:
# https://anonscm.debian.org/cgit/pkg-grass/postgis.git/tree/debian/rules?h=jessie
&& ./configure \
# --with-gui \
&& make \
&& make install \
&& apk add --no-cache --virtual .postgis-rundeps \
json-c \
&& apk add --no-cache --virtual .postgis-rundeps-edge \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \
geos \
gdal \
proj4 \
protobuf-c \
&& cd / \
&& rm -rf /usr/src/postgis \
&& apk del .fetch-deps .build-deps .build-deps-edge
COPY ./db-creator.sh /db-creator.sh
CMD ["./db-creator.sh"]
However, the dependencies are not installed using apk
due to some unsatisfiable constraints
error.但是,由于一些
unsatisfiable constraints
错误,依赖项没有使用apk
安装。 The error is as follows and the full logs are available in this issue I opened.报错如下,完整的日志在我开的这个issue中有。
ERROR: unsatisfiable constraints:
gdal-dev (missing):
required by: .build-deps-edge-20200123.143501[gdal-dev]
geos-dev (missing):
required by: .build-deps-edge-20200123.143501[geos-dev]
proj4-dev (missing):
required by: .build-deps-edge-20200123.143501[proj4-dev]
Any help is appreciated.任何帮助表示赞赏。
The code on github contains another image postgres:11-alpine comparing to image defined in question: alpine:latest
. github 上的代码包含另一个图像postgres:11-alpine与问题中定义的图像进行比较:
alpine:latest
。
Packages gdal-dev , geos-dev , protobuf-c-dev are no longer in edge repo testing branch, they were migrated to stable v3.11 repository.软件包gdal-dev 、 geos-dev 、 protobuf-c-dev不再位于边缘回购测试分支中,它们已迁移到稳定的 v3.11 存储库。 Also
proj4-dev
was renamed to proj-dev , which is also in stable v3.11 repository. proj4-dev
也被重命名为proj-dev ,它也在稳定的 v3.11 存储库中。
So to fix the Dockerfile
we just need to install above packages from v3.11 repo, ie change this part of code:因此,要修复
Dockerfile
,我们只需要从 v3.11 存储库安装以上软件包,即更改这部分代码:
&& apk add --no-cache --virtual .build-deps \
autoconf \
automake \
g++ \
json-c-dev \
libtool \
libxml2-dev \
make \
perl \
\
&& apk add --no-cache --virtual .build-deps-edge \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \
gdal-dev \
geos-dev \
proj4-dev \
protobuf-c-dev \
proj4-dev \
protobuf-c-dev \
to this one:对这个:
&& apk add --no-cache --virtual .build-deps \
autoconf \
automake \
g++ \
gdal-dev \
geos-dev \
json-c-dev \
libtool \
libxml2-dev \
make \
perl \
proj-dev \
protobuf-c-dev \
\
The final Dockerfile
is:最终的
Dockerfile
是:
FROM alpine:3.11
RUN apk add -U postgresql
# install PostGIS
ENV POSTGIS_VERSION 2.5.2
ENV POSTGIS_SHA256 225aeaece00a1a6a9af15526af81bef2af27f4c198de820af1367a792ee1d1a9
RUN set -ex \
\
&& apk add --no-cache --virtual .fetch-deps \
ca-certificates \
openssl \
tar \
\
&& wget -O postgis.tar.gz "https://github.com/postgis/postgis/archive/$POSTGIS_VERSION.tar.gz" \
&& echo "$POSTGIS_SHA256 *postgis.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src/postgis \
&& tar \
--extract \
--file postgis.tar.gz \
--directory /usr/src/postgis \
--strip-components 1 \
&& rm postgis.tar.gz \
\
&& apk add --no-cache --virtual .build-deps \
autoconf \
automake \
g++ \
gdal-dev \
geos-dev \
json-c-dev \
libtool \
libxml2-dev \
make \
perl \
proj-dev \
protobuf-c-dev \
\
&& cd /usr/src/postgis \
&& ./autogen.sh \
# configure options taken from:
# https://anonscm.debian.org/cgit/pkg-grass/postgis.git/tree/debian/rules?h=jessie
&& ./configure \
# --with-gui \
&& make \
&& make install \
&& apk add --no-cache --virtual .postgis-rundeps \
json-c \
&& apk add --no-cache --virtual .postgis-rundeps-edge \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/main \
geos \
gdal \
proj4 \
protobuf-c \
&& cd / \
&& rm -rf /usr/src/postgis \
&& apk del .fetch-deps .build-deps .build-deps-edge
COPY ./db-creator.sh /db-creator.sh
CMD ["./db-creator.sh"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.