首页 > 解决方案 > Docker 容器中 Alpine Linux (arm32v6) 上的 PostgreSQL 9.6.9 - 如何安装正确的 postgresql-contrib 包?

问题描述

我需要在 32 位 ARM 系统上的 Docker 容器中安装支持 uuid-ossp 的 PostgreSQL 9.6.9(它是 QNAP NAS,CPU:Annapurna Labs Alpine AL-314)。

我找到了arm32v6/postgres图像并安装了arm32v6/postgres:9.6.9-alpine. 这工作顺利,但缺少 postgresql-contrib 包。据我了解,我需要安装 postgresql-contrib 以获得 uuid-ossp 支持。

我在容器中打开了一个 CLI 并尝试:

# apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/armhf/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/armhf/APKINDEX.tar.gz
v3.7.0-215-g16971064c0 [http://dl-cdn.alpinelinux.org/alpine/v3.7/main]
v3.7.0-207-gac61833f9b [http://dl-cdn.alpinelinux.org/alpine/v3.7/community]
OK: 8879 distinct packages available
# apk add postgresql-contrib=9.6.9-r0
ERROR: unsatisfiable constraints:
  postgresql-contrib-10.4-r0:
    breaks: world[postgresql-contrib=9.6.9-r0]

如何安装正确版本的 postgresql-contrib?或者我可以将 postgresql-contrib-10.4-r0 与 PostgreSQL 9.6.9 一起使用吗?

标签: postgresqldockerarmalpinepostgresql-9.6

解决方案


只需使用基本的 alpine 映像并完全从 Alpine 的官方软件包安装 PostgreSQL:postgresqlpostgresql-contrib. 最后一个提供 PostgreSQL 9.6 的稳定 Alpine 是 v3.6,它落后了两个版本,但仍然受支持。Alpine v3.7 仅提供 10.4。

也不要指定确切的版本apk add。Alpine 只为每个分支提供单一版本的包(例如 v3.7、v3.8、edge)。一旦我们发布 postgresql-contrib 9.6.9-r1 或 9.6.10-r0(例如修复一些安全问题),9.6.9-r0 将不再可用,您apk add postgresql-contrib=9.6.9-r0将失败。

这些专门的 Docker 镜像“打包”了一些已经在 Alpine 中正确打包的东西,几乎完全没有用,只会引起混乱和问题。我什至无法计算我在 SO 上回复此类问题的次数。


推荐阅读